无法使用sscanf分隔字符串?

时间:2010-03-24 12:49:23

标签: c string scanf

我有一个相关数字的文本文件,即;
1 2 2
3 2 1
3 4 3

每一行都是一条单独的信息,因此我试图一次读一行,然后将其分成3个数字,但sscanf并没有按照我的预期进行。

char s[5];
char e[5];
char line[100];
int d;

fgets(line, sizeof(line), inFile);
sscanf(line, "%s %s %d", s, e, d);

在fgets yeilds之后加入printf:
1 2 2

然后在sscanf之后,变量's'和'e'为空,而'd'是一些随机数,我甚至无法弄清楚它来自何处。
不确定我做错了什么,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

我们确实需要看到你的变量声明,但在d的情况下,你肯定应该传递地址:

sscanf(line, "%s %s %d", s, e, &d);

从您的评论中,您似乎没有正确声明字符串。你想要这样的东西:

char s[10], e[10];

取决于您对字符串的期望值。但是你必须指定一个尺寸。 line变量应该以类似方式声明。