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。