2013-10-22 111 views
-3

我想要得到的「長度」的值與get_length功能輸入要發送多達主,但我得到以下get_length在printf語句錯誤();主要。顯然它拋棄了scanf輸入的內容。我如何讓它保持用戶輸入的新值?C:功能沒有返回值主

void get_length(int length); 
int main(int argc, char * argv[]) 
{ 
int length; 
int width; 
int area; 
get_length(); 
printf("The length of the rectangle is %d.\n", length); 
return 0; 
} 

void get_length(int length) 
{ 
printf("Please enter the length for a rectangle: "); 
scanf("%d", &length); 

while(length < 1) 
{ 
    printf("Enter a positive number.\n"); 
    scanf("%d", &length); 
} 
return; 
} 
+2

'get_length(&length)' – chux

+0

第11行附近出現錯誤:從地址61400讀取未初始化的值第11行是printf(「長度) – John2K13

+2

這不應該編譯。不帶參數調用get_length()。 – elimirks

回答

1
int get_length(); 
int main(int argc, char * argv[]) 
{ 
int length; 
int width; 
int area; 
length = get_length(); 
printf("The length of the rectangle is %d.\n", length); 
return 0; 
} 

int get_length() 
{ 
int length; 
printf("Please enter the length for a rectangle: "); 
scanf("%d", &length); 

while(length < 1) 
{ 
    printf("Enter a positive number.\n"); 
    scanf("%d", &length); 
} 
return length; 
} 

可以在get_length返回length()函數如上。或者使用pointer,而不是像如下:

void get_length(int* length); 
int main(int argc, char * argv[]) 
{ 
int length; 
int width; 
int area; 
get_length(&length); 
printf("The length of the rectangle is %d.\n", length); 
return 0; 
} 

void get_length(int* length) 
{ 
printf("Please enter the length for a rectangle: "); 
scanf("%d", length); 

while(*length < 1) 
{ 
    printf("Enter a positive number.\n"); 
    scanf("%d", length); 
} 
return; 
} 

在C++中,你可以使用reference

+0

謝謝,第二個與void無關似乎工作! – John2K13

2

如何更改函數的簽名?從void get_length(int length)int get_length();

int get_length() 
{ 
    int length = 0; 
    printf("Please enter the length for a rectangle: "); 
    scanf("%d", &length); 

    while(length < 1) 
    { 
     printf("Enter a positive number.\n"); 
     scanf("%d", &length); 
    } 
    return length; 
} 
0

你有幾個問題,一個你不傳遞任何參數get_length,第二你需要傳遞參數作爲指針爲了得到值回:

void get_length(int *length) 

的的scanf就改成這樣:

scanf("%d", length); 

同時這樣:

while(*length < 1) 

最後你在main調用將是:

get_length(&length); 
0

你需要調用get_length一個參數。

像這樣:

get_length(&length); 

而且有方法採取一個int *爲參數。

void get_length(int* length) 

然後它可以爲你存儲長度的值。

1

有兩種方法來完成這項工作。第一個是實際回報length

int get_length(void) 
{ 
    int length; 
    // get length 
    return length; 
} 

main

int length; 

length = get_length(); 

二是要傳遞一個指針,並修改一下指針指向:

main

get_length(&length);