代码之家  ›  专栏  ›  技术社区  ›  Gal

扫描包含C中空格的字符串

  •  3
  • Gal  · 技术社区  · 15 年前

    在我的代码中:

    scanf("%s", &text);
    printf("%s\n", text);
    

    输入:

    hi how are you
    

    输出:

    hi
    

    而不是

    你好
    

    我能做些什么来修复它?

    3 回复  |  直到 15 年前
        1
  •  3
  •   The Archetypal Paul    15 年前

    看 fgets

    fgets()函数最多读取一个 少于字符数 由给定流中的n指定 并将它们存储在字符串中 s.换行时停止阅读 在文件结尾或 错误。新行,如果有的话,是 保留。如果读取了任何字符 没有错误,一个`\0' 附加字符以结束 字符串。

        2
  •  1
  •   falstro    15 年前

    我想你在找

    ssize_t getline(char **lineptr, size_t *n, FILE *stream);
    

    它将读取到新行分隔符。或者如果使用其他分隔符

    ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
    
        3
  •  1
  •   GreenMatt    15 年前

    使用 fgets 要获得您的输入:

    #include <stdio.h>
    #include <stdlib.h>
    int main(void) {
        char text[80];
        fgets(text, sizeof(text), stdin);
        printf("%s\n", text);
    }