2017-10-21 119 views
0

爲什麼不能我使用此代碼,我使用VS 2017和已在命令參數4 + 3讀取值

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
float numberOne; 
float numberTwo; 
float theResult; 

if (argc == 2) 
{ 
    sscanf(argv[1], "%f", &numberOne); 
    sscanf(argv[2], "%f", &numberTwo); 
    printf("%f \n", numberOne + numberTwo); 

} 
else 
{ 
    printf("invalid input"); 
} 

sleep(10); 
return(0); 

} 
+1

首先,如果'的argc == 2'的有效索引是'[0]'和'[1]',值2表示有多少,而不是最高指數。如果你輸入'4 + 3',沒有空格,我會期待'argv [1]'中的所有內容。 –

+1

鑑於輸入格式,您正在使用不合適的格式字符串。你也應該檢查'sscanf()'的返回值。 –

回答

1

你應該傳遞參數作爲讀取命令行的第二個值4 3(沒有'+'字符在3和4之間)。 argc是傳遞的命令行參數的數量。默認情況下,第一個參數總是程序名。所以,argc值將是3

if (argc == 3) 
{ 
    sscanf(argv[1], "%f", &numberOne); 
    sscanf(argv[2], "%f", &numberTwo); 
    printf("%f \n", numberOne + numberTwo); 
} 
+0

可惜這種代碼是使用輸入2 + 4 15 + 17 1.395 + 2.890 1.562 + 0 2.391 +一個 一個+ 2.695 – Squidly

+2

@Squidly在這種情況下被測試,它預訂購失敗測試。你將不得不重新設計。 –

+0

我的大學講師有一些機器人標誌着我們的代碼一旦在線提交,它使用+輸入值,所以我把它全部弄錯了。 – Squidly