使用带有空格的Ints和字符串接受输入

时间:2012-11-02 05:04:20

标签: c scanf

我正在尝试接受来自文件的输入。此文件的格式为整数,后跟一个选项卡,后跟一个字符串(可能有也可能没有空格)。

例如:

1\tls -l
2\tls

我尝试使用:

int   cmd_num;
char command[80];

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

然而,当它看到一个空间时失败了。有什么帮助吗?

由于

2 个答案:

答案 0 :(得分: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();至少你会知道是否收集了换行符(并且必要时可以吞并到换行符。)

答案 1 :(得分:0)

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

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

这肯定有用......