读入文件,使用Strtok,部分字段读取成功,部分字段不成功
Reading in file and using Strtok, some fields read successfully, some fields do not
我正在制作一个从文件中读取数据的函数。文件输入是名称和 ID#。
示例:
“乔治·华盛顿,2345678
约翰·亚当斯,3456789
托马斯·杰斐逊,4567890
我能正确读入所有的名字,但身份证号码读错了。读入的数字都在 2682824 左右。None 的 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;
}
当您在 while
循环中第二次调用 strtok
时,传递 NULL
作为参数而不是 j
。
token = strtok(NULL, "\n");
当您在第一个参数中传递 NULL
时,strtok
从最后一个标记恢复解析。当你传递 j
时,它再次从 j
开始解析。
另一个问题是你正在使用
printf(" %i\n", token);
token
仍然是一个字符串。 "%i"
不是此处使用的正确格式说明符。您需要使用:
printf(" %s\n", token);
我正在制作一个从文件中读取数据的函数。文件输入是名称和 ID#。
示例: “乔治·华盛顿,2345678 约翰·亚当斯,3456789 托马斯·杰斐逊,4567890
我能正确读入所有的名字,但身份证号码读错了。读入的数字都在 2682824 左右。None 的 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;
}
当您在 while
循环中第二次调用 strtok
时,传递 NULL
作为参数而不是 j
。
token = strtok(NULL, "\n");
当您在第一个参数中传递 NULL
时,strtok
从最后一个标记恢复解析。当你传递 j
时,它再次从 j
开始解析。
另一个问题是你正在使用
printf(" %i\n", token);
token
仍然是一个字符串。 "%i"
不是此处使用的正确格式说明符。您需要使用:
printf(" %s\n", token);