-2

我想使用 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;
}
4

5 回答 5

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;
}
于 2013-10-22T02:26:35.650 回答
2
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;
}

您可以length像上面一样在 get_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

于 2013-10-22T02:27:50.920 回答
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);
于 2013-10-22T02:28:24.103 回答
0

您有一些问题,一个是您没有将任何参数传递给get_length,第二个您需要将参数作为指针传递才能取回值:

void get_length(int *length)

scanf变成这样:

scanf("%d", length);

以及为此

while(*length < 1)

最后你打电话main是:

get_length(&length);
于 2013-10-22T02:27:10.080 回答
0

您需要使用参数调用 get_length。

像这样:

get_length(&length);

并让该方法以 int* 作为参数。

void get_length(int* length)

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

于 2013-10-22T02:27:55.677 回答