格式说明符 %n 未返回字符数

Format specifier %n not returning the count of characters

首先,我想澄清一下,我是初学者,这可能是个愚蠢的问题,我可能做错了什么。

我想从字符串中读取字符,直到找到 , 并将它们存储在另一个字符串中。我还想知道读了多少个字符。这就是我用 sscanf:

做的
sscanf(str, "%[^,]s %n ", newstr, &number);

当我尝试打印数字时,无论我输入什么,它都会打印 0,即使在 newstr.

中存储了多个字符也是如此

问题似乎出在 [^,] 子说明符中,因为 %n 可以在没有它的情况下正常工作。

I want to read characters from a string until a ',' is found and store them in another string. I also want to know how many characters have been read.

不需要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