我試圖檢查第三命令行是一個數字,所以我做分段故障
int n;
if (!isdigit(argv[3]))
{
fprintf(stderr, "n MUST be a number");
return 4;
} else
{
n = atoi(argv[3]);
printf("%i\n",n);
}
,但我發現
Segmentation fault
但如果我只是做了
int n = atoi(argv[3]);
它工作得很好,我真的不明白爲什麼
'isdigit'需要一個'int',你給它一個'char *'。打開警告。 – DeiDei
你在哪裏檢查'argc> = 4'? –
'if(!isdigit(argv [3] [0])||(argv [3] [0] ==' - '&&!isdigit(argv [3] [1])))'同樣的第三個命令行是也許''argv [2]'(1st:argv [0],2nd:argv [1],3rd:argv [2]) – BLUEPIXY