使用sscanf读取C中带有空格的字符串

时间:2014-12-12 01:51:59

标签: c

我正在尝试使用sscanf扫描一串文本并将值存储到数组中。当存储最后一个字符串时,它会在白色空间中停止扫描。例如,在下面的字符串中,它只存储单词“STRING”。我已经尝试使用%[^ \ t \ n]和其他各种说明符,但似乎我遗漏了一些东西。

我不能让函数包含空格,我确定它可能很简单。

string test = "9999:STRING OF TEXT";

scan = sscanf(test, "%d:%s", rec[i].ref, rec[i].string);

2 个答案:

答案 0 :(得分:2)

你应该发布一个最小的工作代码。

然而,问题很可能是%s不会像%f和%d这样的数字格式跳过空格。使用类似sscanf(test, "%d:%[^\n]", rec[i].ref, rec[i].string);的内容来捕获:之后的内容。

在此查看详细信息:[http://www.cplusplus.com/reference/cstdio/sscanf/][1]

答案 1 :(得分:1)

所以这不起作用?

sscanf(test, "%d:%[^\t\n]", rec[i].ref, rec[i].string);

看看这个答案:reading a string with spaces with sscanf

基本上这将匹配数字,然后是括号内的任何内容(制表符,换行符),请注意^符号。

相关问题