处理来自C中的行的数据

时间:2011-10-09 18:20:36

标签: c scanf

我的数据格式如下

int : int \t string

例如,

11:11     long long long description.

我用

sscanf(line, "%d:%d\t%s\n", &num1, &num2, &description)

但它只是从描述中删除了第一个单词 如何从行继续处理数据以接收带空格的描述中的所有字符?

3 个答案:

答案 0 :(得分:6)

格式规范%s 将读取字符串,直到找到空格字符。如果您想要阅读 \ n 以外的所有字符,您可以执行%[^ \ n] 。这就是说只要字符不在包含换行符的集合中就读取字符。请注意,它不会读取尾随\ n。所以最终的解决方案是:

sscanf(line, "%d:%d\t%[^\n]", &num1, &num2, description);

答案 1 :(得分:0)

试试这个:

sscanf(line, "%d : %d\t%s\n", &num1, &num2, &description)

答案 2 :(得分:0)

因为你的格式非常简单我想如果我只是在字符串上循环并在适当的地方用\ 0切割它,因为你 知道应该有多少部分。

设计越简单,就越简单