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

时间:2010-11-24 17:37:49

标签: c whitespace scanf

在我的代码中:

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

输入:

hi how are you

输出:

hi

而不是

hi how are you

我该怎么做才能解决它?

3 个答案:

答案 0 :(得分:3)

查看fgets

  

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

答案 1 :(得分:1)

我想你正在寻找

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

将读取换行符分隔符。或者,如果您正在使用其他分隔符

ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);

答案 2 :(得分:1)

使用fgets获取您的输入:

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