【发布时间】:2014-02-15 19:09:35
【问题描述】:
我正在尝试从文件中读取数据并将数据存储在结构中。结构如下所示:
struct someData {
int number;
char *name;
};
文件中的数据可以是任何格式。现在我正在尝试以 CSV 格式阅读。数据将始终是一个字符串,后跟一个整数。
some string data,100
another string,500
这是我试图读取数据并将其放入结构中的代码部分。
FILE *ifp;
char *mode = "r";
char *name;
int number;
ifp = fopen("myDataFile.txt", mode);
if (ifp == NULL) {
fprintf(stderr, "Can't open input file in.list!\n");
exit(1);
}
// read up to 100 characters up to a comma, then a decimal
while(fscanf(ifp, "%100[^,],%d\n", name, &number) != EOF){
// print out the data we got
printf("Data from file: %s %d", name, number);
struct someData *newData = (struct someData *) malloc(sizeof(struct someData));
newData->number = number;
newData->name = name;
printf("Name: %s Number: %d\n\n",newData->name, newData->number);
}
打印语句给了我以下内容
Data from file: some string d 100
Name: some string d Number: 100
Data from file: another stri Number: 500
Name: another stri Number 500
第二个名字被截断,实际上最终打印了几个奇怪的字符。我认为我的 fscanf 在 while 循环中有问题。我尝试了其他一些方法来获取数据,例如使用 %s 而不是 %100 但没有任何效果。
【问题讨论】:
-
char *name;名称不指向数组。在if中的 fscanf 之前
标签: c