sscanf参数少于指定的参数?
问题描述:
所以我不知道当面对功能如何sscanf的有这样一行:sscanf参数少于指定的参数?
sscanf(input_string, "%s %s %s", cmd1, cmd2, cmd3);
但说input_string只包含1个字符串标记。什么值分配给cmd2和cmd3?是否有错误?
我正在使用GNU C编译器。
答
什么都不会分配给额外的参数。 sscanf
的回报告诉您成功完成了多少次转换,因此在这种情况下,它将返回1
。通常,只需比较你所期望的数量,假设输入否则不好:
if (3 != sscanf(input_string,"%s %s %s", cmd1, cmd2, cmd3))
fprintf(stderr, "Badly formatted input (expecting three strings)\n");
当你从文件中读取,你经常要在一个循环,直到你得到正确的输入来执行:
while (3 != scanf("%s %s %s", cmd1, cmd2, cmd3))
fprintf(stderr, "Please enter 3 strings:");
答
http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/
成功时,该函数返回成功填补参数 列表中的项目数量。这个计数可以匹配预期的 项目的数量,或者在匹配失败的情况下可以小于 - 甚至为零。在 输入失败的情况下,任何数据可能成功地解释为 ,然后返回EOF。