gpt4 book ai didi

c - 我在 C 中使用 scanf 函数时遇到了一些问题。当我编译它时,它显示消息 : Segmentation error

转载 作者:行者123 更新时间:2023-11-30 19:02:09 24 4
gpt4 key购买 nike

好吧,让我具体说明一下。我想构建一个具有 scanf 函数的程序,它将要求用户输入如下示例所示的信息:

  1. 在此输入您的年龄_(假设我在年龄中输入 16)(第一个输出):你的年龄是 16
  2. 在此处输入您的名字_(假设我输入 john )(第二个输出):你的名字是约翰现在,无需向用户询问任何内容,它应该自动给出如下输出:(第三个​​输出):你的名字是约翰,你的年龄是 16。

下面有一张图片显示我的错误: Image captured by me

我的第一个和第二个输出运行良好,但问题出在第三个。它不显示编译器中的整个第三个输出。但它不显示错误或警告,而是显示一条文本“段错误”。请更正我的代码。拜托拜托拜托了。

#include <stdio.h>

int main()
{
int age;
char name;

printf("Enter your age here: ");
scanf("%d", &age);
printf("Your age is %d \n", age);

printf("enter your name here: \n");
scanf("%s", &name);

printf("Your name is %s and your age is %d.", name, age);

return 0;
}

最佳答案

您声明了一个字符,但您将其视为字符串。在 C 中,字符串实际上是一维字符数组,末尾有一个空字符“\0”。

以下内容:

"my fun string"

相当于 C 中的:

{'m', 'y', ' ', 'f', 'u', 'n', ' ', 's', 't', 'r', 'i', 'n', 'g', '\0'}

您需要为该名称分配一个足够大的字符数组。类似于以下内容:

int max_size=120;字符名称[max_size];

所以你的代码应该是这样的:

#include <stdio.h>

int main()
{
int age;

int max_size=120;
char name[max_size];
printf("Enter your age here: ");
scanf("%d", &age);
printf("Your age is %d.\n", age);

printf("enter your name here: \n");
scanf("%s", &name);

printf("Your name is %s and your age is %d.\n", name, age);

return 0;
}

此外,您可能不应该使用scanf()fgets() 是更好的选择。

关于c - 我在 C 中使用 scanf 函数时遇到了一些问题。当我编译它时,它显示消息 : Segmentation error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56415149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com