C:函数不向main返回值

时间:2013-10-22 02:20:37

标签: c function

我想获取“length”输入的值,并将get_length函数发送到main,但是在get_length()之后的printf语句中出现错误;在主要。显然它正在抛弃用scanf输入的内容。如何保持用户输入的新值?

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

5 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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

答案 2 :(得分:1)

有两种方法可以完成工作。第一个是实际返回length

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

main

int length;

length = get_length();

第二种是传递指针并修改指针指向的内容:

void get_length(int* length_ptr)
{
    scanf("%d", length_ptr);
}
main中的

get_length(&length);

答案 3 :(得分:0)

你有一些问题,一个是你没有将任何参数传递给get_length,第二个你需要将参数作为指针传递以获得值:

void get_length(int *length)

scanf会改为:

scanf("%d", length);

同时到此:

while(*length < 1)

最后你在main打电话:

get_length(&length);

答案 4 :(得分:0)

您需要使用参数调用get_length。

像这样:

get_length(&length);

让方法取一个int *作为参数。

void get_length(int* length)

然后它可以为你存储长度值。