【问题标题】:What is wrong with this code? It is only printing out the first letter of the user input这段代码有什么问题?它只打印出用户输入的第一个字母
【发布时间】:2020-08-27 05:47:27
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char char_name;
printf("Hello, what is your name? \n ");
char_name = getchar();
printf("Hello %c. Glad to meet you. \n", char_name);
return (EXIT_SUCCESS);
}

它不断打印出用户输入的第一个字母。我想让它打印出用户输入的整个字符串

【问题讨论】:

  • 所以你需要先阅读整个用户输入。使用循环,或考虑使用fgets()
  • getchar 的返回值不适合 char 变量
  • 如果你想知道为什么getchar() 只得到一个字符,什么(仍然,阅读文档后)不清楚?
  • 你告诉它打印用户输入的第一个字母

标签: c


【解决方案1】:

现在 get char 只获取提供的字符串的第一个字符。您需要创建一个字符数组来保存字符串并使用 fgets 正确设置它。

您可以通过执行以下操作来读取整个名称

#include <stdio.h>
int main()
{
    char name[20];
    printf("Enter name: ");
    fgets(name, sizeof name, stdin);
    printf("Your name is %s.", name);
    return 0;
}

【讨论】:

  • scanf() 是一个非常糟糕的选择。
  • @SouravGhosh 好点,更新为使用gets。
  • 你让事情变得更糟了。使用fegts(),标准中已经没有gets()这个函数了。
猜你喜欢
  • 2019-11-17
  • 2021-05-24
  • 1970-01-01
  • 2010-12-22
  • 2021-05-28
  • 2015-11-01
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多