首先,我想说清楚我是初学者,这可能是一个愚蠢的问题,而且我可能做错了。
我想从字符串中读取字符,直到找到,
并将它们存储在另一个字符串中。我也想知道已经阅读了多少个字符。这就是我对sscanf
所做的事情:
sscanf(str, "%[^,]s %n ", newstr, &number);
当我尝试打印数字时,无论我输入什么,它都会打印0
,即使newstr
中存储了多个字符。
问题似乎出现在[^,]
子说明符中%n
正常工作,没有它。
答案 0 :(得分:1)
我想从字符串中读取字符,直到找到','并将它们存储在另一个字符串中。我也想知道已经阅读了多少个字符。
不需要s
。它不是"%[^,]"
说明符的一部分。尾随" "
也没有任何意义。也应该限制输入长度。除非代码知道它已被填充,否则不要使用newstr
。
char str[100];
int number = 0;
// sscanf(str, "%[^,]s %n ", newstr, &number);
sscanf(str, "%99[^,], %n", newstr, &number);
if (number) Success();
else Fail(); // do not use newstr