【问题标题】:How to read a group of characters in C?如何在C中读取一组字符?
【发布时间】:2015-11-26 03:58:37
【问题描述】:

我的问题真的很基础,我想知道如何扫描一组字符,比如一个单词,将该单词归因于一个变量,然后打印出来

据我所知,我必须定义我的变量,比如

char word;

然后喜欢

scanf("%c", &word);

但是当我做printf("\n %c", word);它给了我一个奇怪的字符,而不是整个字符组w + o + r + d

我想我错过了声明数组 idk 之类的东西,xD 有人可以教我吗?

【问题讨论】:

  • 你的意思是:奇怪的字符,你能具体点吗?
  • 像一个特殊字符,一个太阳,一个月亮,一个随机的东西,但是我明白了,我不能使用 %c,我必须使用 %s 因为它是一个字符串,对吧?
  • 是的,请阅读 c 中的字符串是什么。完全理解这一点非常重要,如果你理解了它,那么你就会知道"%15s" 的来源。另请阅读this
  • 您实际发布的代码将打印 w 。如果你得到奇怪的字符,你的真实代码一定是不同的。
  • 您的问题没有真正的意义...您应该发布更完整的示例,并说明您的输入。如果当前代码打印单个垃圾字符,那是因为 scanf 失败,并且 'word' 仍未初始化。

标签: c char


【解决方案1】:

如果您只是将%s 字符串格式化程序与字符数组一起使用:

char word[16];
if (scanf("%15s", word) != 1) /* The correct way to use `scanf()' */
    fprintf(stderr, "Error: this is really wierd but possible!\n");
else
    fprintf(stdout, "Ok, so the input is: %s\n", word);

【讨论】:

  • 这是错的,&word的类型是什么?我总是看到scanf() 是如何被滥用的,这是一个非常丑陋的功能。
  • 要么使用word 要么使用&word[0]&word 是完全错误的。
  • @iharob 和 MarcoBonelli:抱歉,我有一段时间没有使用 C。让我解决这个问题。我的错误=P。在用 JS 和 HTML 编码这么久之后,我已经完全忘记了指针和数组......
【解决方案2】:

要从用户那里获取字符串作为输入,您应该使用fgets()。原因是您可以指定允许用户输入多少字符以防止缓冲区溢出。

char word[5];
fgets(word, sizeof(word), stdin);

这里是函数的相关documentation

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多