2

コマンドライン入力を受け入れる必要があるコードを書いています。入力の検証はマーキング基準の一部であるため、後でメイン コードに入力できるように、正確に 1 つの数字が入力されていることを確認するコードを作成しています (無効な入力の 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); 
}

プログラムは、少なくとも 1 つの引数がコマンド ラインにある場合は 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 に答える