为什么用argv 调用sscanf()只能使用一次?

我需要将argv [1]和argv [2]变为不同的类型。 我发现我只能使用sscanf()一次,或者无法检索argv中的下一个字符串。 这是我的代码。

int main( int argc, char *argv[]) { char t; float temp; sscanf(argv[1], "-%[cf]",&t); sscanf(argv[2], "%f", &temp); return 0; } 

只有第一个sscanf()才能获得格式化的值。 我怎么能完成argv [2]?

尝试将字符串数据保存在char从而导致未定义的行为(UB)。

"%[]"希望匹配一个字符数组。

 // char t; // sscanf(argv[1], "-%[cf]",&t); char t[100]; if (sscanf(argv[1], "-%99[cf]",t) != 1) Handle_Failure(); 

推荐:
添加宽度限制(如99)以限制字符串输入。 设置为小于t
检查sscanf()的返回值。