为什么用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()
的返回值。