【问题标题】:How to use getchar() with string?如何将 getchar() 与字符串一起使用?
【发布时间】:2018-03-20 14:10:21
【问题描述】:

我尝试将文本附加到数组,但是当我尝试使用 printf 之后,这似乎不起作用。它确实打印了一个空格。

char text[10][30];      // 10 is text count and 30 text length
printf("Enter text: ");
text[0]=getchar();

【问题讨论】:

  • text[10][30]; 这不是声明。 minimal reproducible example
  • 对不起,我的意思是字符文本[10][30]
  • getchar() 返回一个字符,而不是文本。
  • @freestyle 不完全是。 getchar() 返回一个 int 所以它可以返回 EOF (但这里是吹毛求疵)
  • 你可能想使用fgets

标签: c arrays string getchar


【解决方案1】:

这里有一个可能的解决方案来做你想做的事。由于您的长度固定为 30,因此 fgets 是一个不错的选择。

#include <stdio.h>

int
main(void)
{
    char text[10][30];

    printf("Input\n");

    fgets(text[0], sizeof(text[0]), stdin);

    printf("%s\n", text[0]);
}

【讨论】:

  • 为什么在矩阵中只使用了十行?最好使用char text[30];。此外,如果您保留当前定义,则使用 fgets(text[0], sizeof(text[0]), stdin); 是明智的。并且在使用数据之前应该检查来自fgets()的返回值。
  • @JonathanLeffler 我只是想尽可能多地使用他的初始代码。我假设他想要 10 个字符串是有原因的。您使用 sizeof 并检查返回值是正确的。我不想为 OP 打开另一罐蠕虫。
  • 你能做的(我倾向于做的)是保持接近原始代码,但评论一些应该改变的事情。有效输入的测试更为关键——无论如何我都会做出改变:if (fgets(text[0], sizeof(text[0]), stdin) != NULL) printf("%s\n", text[0]);。如果输入足够短,输出中会有两个换行符;我可能不会费心提及这一点。
猜你喜欢
  • 2016-04-24
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
相关资源
最近更新 更多