C 格式说明符%n未返回字符计数
首先,我想说明我是一个初学者,这可能是一个愚蠢的问题,我可能做错了什么 我想从一个字符串中读取字符,直到找到一个C 格式说明符%n未返回字符计数,c,scanf,stdio,format-specifiers,C,Scanf,Stdio,Format Specifiers,首先,我想说明我是一个初学者,这可能是一个愚蠢的问题,我可能做错了什么 我想从一个字符串中读取字符,直到找到一个,,并将它们存储在另一个字符串中。我还想知道读了多少个字符。这就是我正在使用的sscanf: sscanf(str, "%[^,]s %n ", newstr, &number); 当我尝试打印数字时,它会打印0,而不考虑我的输入,即使在newstr中存储了几个字符 问题似乎出在[^,]子说明符中,因为%n在没有它的情况下可以正常工作 我想从字符串中读取字符,直到找到“,”并
,
,并将它们存储在另一个字符串中。我还想知道读了多少个字符。这就是我正在使用的sscanf
:
sscanf(str, "%[^,]s %n ", newstr, &number);
当我尝试打印数字时,它会打印0
,而不考虑我的输入,即使在newstr
中存储了几个字符
问题似乎出在[^,]
子说明符中,因为%n
在没有它的情况下可以正常工作
我想从字符串中读取字符,直到找到“,”并将它们存储在另一个字符串中。我还想知道读了多少个字符
不需要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
你编译时有警告吗;
number
的类型是什么?我确实编译了一些警告。数字是整数。请参阅并提供一个。从格式中删除s
。它不属于%[]
,当然s
就在那里,因为您认为您正在读取字符串。但是%[^,]
已经读取了一个字符串。