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

时间:2015-10-16 20:49:17

标签: c argv scanf

我需要将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]?

1 个答案:

答案 0 :(得分:3)

尝试在"%[]"中保存字符串数据,导致未定义的行为(UB)。

// char t; // sscanf(argv[1], "-%[cf]",&t); char t[100]; if (sscanf(argv[1], "-%99[cf]",t) != 1) Handle_Failure(); 期望与字符数组匹配。

t

推荐:
添加宽度限制(如99)以限制字符串输入。设置为小于sscanf()的大小1 检查var sass = require('node-sass'); var app = new EmberApp({ sassOptions: { functions: { variable: function () { return new sass.types.String(process.env.VARIABLE); } } } }); 的返回值。