我需要将 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
大小 1。
检查sscanf()
的返回值。
关于c - 为什么使用 argv[] 调用 sscanf() 只能使用一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33185253/