gpt4 book ai didi

c - C语言如何读取包含空格的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 05:35:02 25 4
gpt4 key购买 nike

当字符串在单词之间包含空格时,从 C 键盘读取字符串的最准确方法是什么?当我为此目的使用 scanf 时,它不会读取带空格的字符串。第二个选项是使用 gets 但它应该是有害的(我也想知道为什么?)。另一件事是我不想使用任何文件处理概念,如 fgets。

最佳答案

这些是读取包含不使用 getsfgets 的空格的字符串的 2 种方法

  1. 您可以使用 getline(您的系统中可能不存在 POSIX 2008),它可以方便地管理缓冲区的分配,缓冲区的大小足以捕获整行。

    char *line = NULL;
    size_t bufsize = 0;
    size_t n_read; // number of characters read including delimiter
    while ((n_read = getline(&line, &bufsize, stdin)) > 1 && line != NULL) {
    // do something with line
    }
  2. 如果您绝对需要 scanf,在本示例中它会读取到行尾,除非该行的字符数超过指定的字符数减去分隔符 1。在后一种情况下,该行被截断,您将在下一次 scanf 调用中获得剩余的字符。

    char line[1024];
    while (scanf("%1023[^\n]\n", line) == 1) {
    // do something with line
    }

我还应该指出,例如,当您使用 scanf 从键盘读取字符串时,您实际上是在使用文件指针 stdin 从文件中读取。所以你无法真正避免“任何文件处理概念”

关于c - C语言如何读取包含空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41545850/

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