Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 格式说明符%n未返回字符计数_C_Scanf_Stdio_Format Specifiers - Fatal编程技术网

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
就在那里,因为您认为您正在读取字符串。但是
%[^,]
已经读取了一个字符串。