2017-04-01 33 views
0

我想知道是否有人可以解釋如何通過命令行傳遞參數?我真的很困惑它的工作原理。現在我試圖將一個整數傳遞到主程序中。我會如何去做這件事?在C中通過命令行傳遞一個整數?

編輯:不斷獲取初始化使指針沒有投射整數[-Wint-conversion]錯誤?

#include <stdio.h> 
#define PI 3.1416 
int 
main (int argc, char *argv[]) 

{ 
    double r,area, circ; 

    char a = argv[1]; 
    int num = a - '0'; 

    printf("You have entered %d",num); 

    r= num/2; 
    area = PI * r * r; 
    circ= 2 * PI * r; 

    printf ("A circle with a diameter of %d ", num); 
    printf ("has an area of %5.3lf cm2\n", area); 
    printf ("and a circumference of %4.2lf cm.\n", circ); 

    return (0); 

} 
+0

你有沒有嘗試過這個或搜索/閱讀關於命令行參數處理如何在C中工作? – pvg

+0

http://stackoverflow.com/questions/4176326/arguments-to-main-in-c –

+0

有很多關於如何在C程序中處理命令行參數的教程。你必須記住的重要事情是'argv'數組是* strings *的數組。首先創建一個循環遍歷參數並打印它們的程序(作爲字符串)。一旦你這樣做,它應該都變得很容易理解。 –

回答

1

在C的主要功能簽名會是這樣:

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

的argc是參數傳遞給你的程序,包括程序名稱自身的數量。

argv是一個包含每個參數的數組作爲字符串。

所以,如果你調用你的程序是這樣的:

./program 10 

的argc將2

的argv [0]將是字符串 '程序'

的argv [1]將是字符串 '10'

你能解決這樣的代碼:

#include <stdio.h> 
#include <stdlib.h> 
#define PI 3.1416 
int 
main (int argc, char *argv[]) 

{ 
    double r,area, circ; 

    char *a = argv[1]; 
    int num = atoi(a); 

    printf("You have entered %d",num); 

    r= num/2; 
    area = PI * r * r; 
    circ= 2 * PI * r; 

    printf ("A circle with a diameter of %d ", num); 
    printf ("has an area of %5.3lf cm2\n", area); 
    printf ("and a circumference of %4.2lf cm.\n", circ); 

    return (0); 

} 

您可能還想在您的打印語句中添加換行符。

+0

所以爲了讓我使用字符串'10',我將不得不把它轉換成一個整數? – JVAN

+0

@JVAN將其作爲int使用是的。 –

+0

@JVAN是的。 C'main'的每個參數都是C風格的字符串。完成整數轉換或者您可能需要的任何其他處理由您決定。 – DUman