格式说明符 %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
首先,我想澄清一下,我是初学者,这可能是个愚蠢的问题,我可能做错了什么。
我想从字符串中读取字符,直到找到 ,
并将它们存储在另一个字符串中。我还想知道读了多少个字符。这就是我用 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