读入文件,使用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 开始解析。

请查看strtok documentation

另一个问题是你正在使用

printf(" %i\n", token);

token 仍然是一个字符串。 "%i" 不是此处使用的正确格式说明符。您需要使用:

printf(" %s\n", token);