ファイルからコンマで区切られたいくつかの値を読み取る C で関数を作成しようとしています。各行には 4 つの値があり、最後の値は整数であり、それらを割り当てられたスペースに配置したいと考えています。while ループでメモリから読み込もうとすると問題ありませんが、for ループまたは関数の外部からは、ファイルの最後の行だけを複数回取得します。私はCが初めてですが、strtok()
関数と関係があると思います。
これが私のコードです:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char * foo;
char * bar;
char * baz;
int qux;
}structure;
char * readFile(const char * filename, structure * array){
const int maxstring=100;
FILE * fr=fopen(filename,"r");
char * rc;
char buf[maxstring];
while(( rc = fgets(buf, maxstring, fr) )) {
array->foo=strtok (buf,",");
array->bar=strtok (NULL,",");
char *aux=strtok (NULL,",");
array->qux=atol(strtok (buf,","));
array->baz=strtok(aux,"\n");
printf("%s,%s,%s,%d\n",array->foo,array->bar,
array->baz,array->qux);
array++;
}
array=array-9;
for (int i=0;i<10;i++){
printf("%s,%s,%s,%d\n",array->foo,array->bar,
array->baz,array->qux);
array++;
}
return "Success";
}
int main(){
structure * array=malloc(100*sizeof(structure));
readFile("repository.txt",array);
free(array);
return 0;
}