【问题标题】:C code that displays values inputted by the user显示用户输入值的 C 代码
【发布时间】:2021-05-02 12:45:35
【问题描述】:

此代码旨在打印出用户输入的值,但该代码正在打印一些无效结果

#include<stdio.h> 
int main(){ 
int age;
char array[][50] = {"name", 
"colour", "country"};
printf("What is your 
name\n"); 
scanf("%s", array[1]); 
printf("How old are 
you\n");
scanf("%d", &age); 
printf("What is your 
favorite colour\n"); 
scanf("%s", array[2]);
printf("Which country are 
youu from\n"); 
scanf("%s", array[3]);
printf("Information 
collected about you is\n"); 
printf("Name: %s\n Age: 
%d\n Colour: %s\n Colour: 
%s\n Country: %s\n", 
array[1], age, array[2], 
array[3]);
}

【问题讨论】:

  • edit您的问题以改进代码格式。编译器可能不需要缩进、段落的空行等,但我们人类需要它才能更好地阅读和理解代码。
  • 这可能不是你的问题,但是注意这里Colour: %s\n Colour: ,你写了两次同样的东西。 0 索引 -> 你的数组没有合适的大小
  • 你需要退后一步,刷新关于数组索引之类的教科书、教程或课程。

标签: arrays c string integer


【解决方案1】:

最后一行有五张印刷品。

printf ("Name: %s\n Age: %d\n Colour: %s\n Colour: %s\n Country: %s\n", array[1], age,  array[2], array[3]);

也就是说,您有 2 个颜色条目,而您只需要 1 个。 编译器不知道在哪里寻找Country %s 部分,然后生成分段错误。当您取消引用无效指针时会发生分段错误。

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2015-10-27
    相关资源
    最近更新 更多