更新: 正如下面的评论所说的那样,我检查了sscanf的返回值,它的quals为2.我还检查了存储在inClient [i] .name和& inClient [i] .waitTime中的内容。它们分别是Ben和4,这是第一行输入而没有其他值。我不确定问题出在哪里。
我在解析输入文本文件时遇到了麻烦。 这是我输入文件的示例。
Ben 4
Mary 12
Anna 20
Gary 10
Jane 6
这是我的代码。
int import_client(char* filename, Node* inClient)
{
char inStr[100];
//char* token;
int i = 0;
FILE* inFilePtr;
if((inFilePtr = fopen(filename, "r")) == NULL)
printf("Error! Unable to open input file.\n");
else
{
while(fgets(inStr, 100, inFilePtr) != NULL)
{
printf("%s\n", inStr);
inClient[i].name = (char*)malloc(sizeof(char) * 20);
sscanf(inStr, "%s %d", inClient[i].name, &inClient[i].waitTime);
printf("%s\t", inClient[i].name);
printf("%d\n", inClient[i].waitTime);
i++;
//printf("I'm here\n");
}
}
fclose(inFilePtr);
return(i);
}
Node是一个带有char * name和int waitTime的结构。 inClient是Node *到空间我malloced space这个函数。
我有两个问题。 1)printf(“%s \ n”,inStr);打印并仅打印输入文件的最后一行,即Jane 60。 2)即使它打印最后一行,但数字是错误的,应该是6.我不知道为什么它最后添加0。