2012-03-01 11 views
0

ファイルの内容を2D配列に読み込みます。ファイルのタイプは次のとおりです。カンマで入力行を分割する

FirstName,Surname 
FirstName,Surname 

などこれは宿題の運動であり、我々は誰もが最初の名前と姓を持っていると仮定することができます。

 Column1  Column2 
Row 0 FirstName Surname 
Row 1 FirstName Surname 

char name[100][2]; 

私は本当にこれで苦労してcouldnています:それは次のようになります2次元配列になるように、私はカンマを使用して行を分割するに行くかどう

私が理解できるどんな助けも見つけていない。

+1

誰もが名と姓を持っているわけではないので、これは宿題であるといいですね。 –

+0

これが宿題でない場合は、スクリプト言語を使用してみませんか? –

+0

[Cのスペースで文字列を分割する]の複製が可能です(http://stackoverflow.com/questions/323285/splitting-a-string-by-space-in-c) –

答えて

5

strtokを使用すると、区切り文字に基づいて文字列をトークン化できます。strcpyname配列に戻されたトークンへのポインタ。

strchrを使用してカンマの場所を確認し、memcpyを使用して、前後の文字列の部分をname配列にコピーすることができます。この方法でも、最初の文字列は保存され、方法は変わりません。strtokになります。また、strtokを使用するよりスレッドセーフであるでしょう。

注:strtokにスレッドセーフな代替がstrtok_rある、しかしそれはPOSIX標準の一部として宣言されています。その機能を利用できない場合は、ご使​​用の環境に類似の機能が定義されている可能性があります。

EDIT:もう一つの方法は、sscanfを使用することです、しかし、あなたが最初の文字列を%s書式指定子を使用することはできません、あなたの代わりに一致しないために文字のセットを指定子を使用する必要があると思いますに対して(',')。宿題なので(そして本当に簡単に)、私はそれを理解できるようにします。

EDIT2:また、あなたの配列は100 char秒の各サイズで2つの文字列の配列のためchar name[2][100]でなければなりません。さもなければ、あなたはそれを持っている方法で、あなたは100の文字列の配列を持っています、それぞれ2 charのサイズです。

関連する問題