2

我正在编写一个需要接受命令行输入的代码。输入验证是标记标准的一部分,因此我正在编写一段代码来检查是否输入了一个数字,以便稍后将其放入主代码中(为无效输入添加一个 else 情况以使用户出错)

#include<stdio.h> 

int main(int argc, char* argv[]) 
{
    double a;

    a = 75;


    if(argc == 2);
    {
        sscanf(argv[1], "%lf", &a);
        printf("%lf \n", a);
    }

    printf("%d% \n", argc);

    return(0); 
}

当命令行上至少有一个参数时,程序会打印 a ,但是当没有输入参数时它会打印分段错误,并且当有多个参数时仍然会扫描。

帮助?

4

1 回答 1

4
if(argc == 2);

相当于

if(argc == 2)
    ;

您需要删除;才能有条件地执行此之后的块

if(argc == 2)
//           ^ no trailing ; now
{
    sscanf(argv[1], "%lf", &a); // now only executed if argc == 2
于 2013-11-13T22:40:25.437 回答