当我将一个空字符串传递给 时sscanf
,它返回零并且它不会更改给定的变量。
char* ptr = "";
abc = sscanf(ptr, "%s", output);
// abc == 0
你能告诉我解决方法吗?
sscanf
等待第一个参数是函数处理的 C 字符串,作为检索数据的源。将空字符串传递给此函数不能产生要初始化的变量,因为此函数不会使用任何内容对其进行初始化。
另请注意,成功时,该函数返回填充的变量数。如果发生匹配失败,此计数可以匹配预期的读数数量或更少,甚至为零。如果在成功读取任何数据之前输入失败,则返回 EOF。
以下代码,使用 MinGW (gcc-core 4.5.0-1) 编译
char str[10];
int ret = sscanf("", "%9s", str);
printf("%d\n", ret);
输出-1
(EOF)
检查是否成功的好方法是sscanf
检查它的返回值是否真的等于提供的变量的数量。在这种情况下,它会是if (ret == 1)
。尽管很多人只是检查是否返回了大于 0 的值,以确保已读取某些内容并且没有发生错误。