0

我正在尝试接受来自文件的输入。该文件采用整数格式,后跟一个制表符,后跟一个字符串(可能有也可能没有空格)。

例如:

1\tls -l
2\tls

我尝试使用:

int   cmd_num;
char command[80];

while (fscanf(ifp, "%d\t%s", &cmd_num, command) != EOF) {
    ...
}

但是,当它看到一个空格时,它失败了。有什么帮助吗?

4

2 回答 2

1

您可能需要使用扫描集来读取字符串:

if (fscanf(fp, "%d\t%79[^\n]\n", &cmd_num, command) != 2)
    ...error handling...
else
    ...use cmd_num and command...

请注意格式字符串中的大小限制,以防止缓冲区溢出。

另请注意,您将不知道换行符是否匹配。您最好使用fgets()阅读整行(或getline()),然后使用sscanf()而不是fscanf(); 至少您会知道是否收集了换行符(并且可以在必要时吞噬换行符)。

于 2012-11-02T05:24:11.987 回答
0

fscanf在你的函数中试试这个:

fscanf(fp,"%d\t%[^\n]s",&cmd_num,command);

这肯定会奏效...

于 2012-11-02T06:27:59.370 回答