我正在创建一个从文件中读取数据的功能。文件输入是名称和ID#。
实施例: "乔治华盛顿,2345678 约翰亚当斯,3456789 Thomas Jefferson,4567890"
我可以正确读取所有名称,但ID号无法正确读取。读入的数字都在2682824左右。没有任何ID接近。有时数字上升或下降5,但保持这些数字。这是我现在的代码。任何帮助将不胜感激。
void readDataIn(){
struct pres tempFill[30];
char s[2] = ",";
char t[50], j[1900];
char *token, *token2;
int *h;
int i = 0, f;
FILE* file;
if((file=fopen("AssignmentOneInput.txt", "r")) != NULL){
while(fgets(j, sizeof(j), file)){
token = strtok(j, ",");
printf("%s\n", token);
token = strtok(NULL, "\n");
printf(" %i\n", token);
}
pause;
}
pause;
fclose(file);
return;
}
答案 0 :(得分:0)
当您在strtok
循环中第二次致电while
时,请将NULL
作为参数而不是j
。
token = strtok(NULL, "\n");
当您在第一个参数中传递NULL
时,strtok
将从最后一个标记继续解析。当您通过j
时,它会再次从j
开始解析。
另一个问题是你正在使用
printf(" %i\n", token);
token
仍然是一个字符串。 "%i"
不是正确的格式说明符。你需要使用:
printf(" %s\n", token);