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

在我的代码中:

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

输入:

 hi how are you 

输出:

 hi 

并不是

 hi how are you 

我该怎么办才能修好它?

看看fgets

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

我想你在寻找

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

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

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

使用fgets获取您的输入:

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