C言語の文字の扱いについてわからないことがあるため質問させてもらいます。
txtファイルに以下のような文字列が入っているとします。
test.txt
1Apple 1 2 3 4 2Orange 2 4 6 8 3Lemon 3 6 9 12
このテキストファイルはスペース区切りで名前、数字4つのように構成されています。
プログラムで扱いやすいように以下のような構造体を定義しました。
C
1struct list{ 2 char* name; 3 int num[4]; 4}; 5typedef struct list *listp;
この構造体のポインターの配列を用意してそこにtest.txtから読み込んだ値を入れていきたいのですが、うまくいきません。
プログラムは以下のようです。
C
1#include <stdio.h> 2#include <string.h> 3 4struct list{ 5 char* name; 6 int num[4]; 7}; 8typedef struct list *listp; 9 10int main(int argc, const char * argv[]) { 11 FILE *fp; 12 char *fname = "test.txt"; 13 char s[100]; 14 char *ptr; 15 int i = 0, j = 0; 16 listp item[3]; 17 18 fp = fopen(fname, "r" ); 19 while(fgets(s, 100, fp) != NULL){ 20 ptr = strtok(s, " "); 21 item[i]->name = ptr; 22 while(ptr != NULL) { 23 ptr = strtok(NULL, " "); 24 if(ptr != NULL) { 25 item[i]->num[j] = *ptr; 26 j += 1; 27 } 28 } 29 i += 1; 30 }
とりあえずfgetsでtxtを一行ずつ読み取って、strtokで文字列を分割して処理しているのですが、エラーが出てしまいます。ptrはcharのポインターなので代入するだけではダメだと思うのですが、具体的にどのようにしたら良いのかわかりません。構造体もこれでいいのかよくわかりません。とりあえずtxtをいい感じにプログラムで扱えるようにしたいです。プログラムの間違いや、根本的にこのようなtxtを扱うのに良いやり方があればお教えください。よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/08/01 16:56
2018/08/01 23:38
2018/08/02 00:05