读取文件并使用Strtok,一些字段读取成功,某些字段不读取

时间:2015-02-09 01:55:51

标签: c file parsing io strtok

我正在创建一个从文件中读取数据的功能。文件输入是名称和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;


}

1 个答案:

答案 0 :(得分:0)

当您在strtok循环中第二次致电while时,请将NULL作为参数而不是j

token = strtok(NULL, "\n");

当您在第一个参数中传递NULL时,strtok将从最后一个标记继续解析。当您通过j时,它会再次从j开始解析。

请查看strtok documentation

另一个问题是你正在使用

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

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

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