2013-11-13 3 views
2

Я пишу код, который должен принимать ввод в командной строке. проверка ввода является частью критериев маркировки, поэтому я пишу фрагмент кода, чтобы проверить, что введено только одно число, поэтому я могу поместить его в основной код позже (добавив случай else для недопустимого ввода для ошибки пользователя)проверить количество входов в c

#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); 
} 

программа печатает, когда по крайней мере один аргумент находится в командной строке, но он печатает ошибку сегментации, когда аргумент не вводится и до сих пор сканируется при более чем одном.

help?

+0

Я думаю, что это условие, что сломано, но я не могу посмотреть, как>< – carrias

ответ

4
if(argc == 2); 

эквивалентно

if(argc == 2) 
    ; 

Вы должны удалить ; иметь блок после этого выполняется условно

if(argc == 2) 
//   ^no trailing ; now 
{ 
    sscanf(argv[1], "%lf", &a); // now only executed if argc == 2 
+0

* facepalms * thanks: D – carrias

Смежные вопросы