scanf()函数在读取字符时,识别到空格就会终止读取,那么如何读取带空格的字符串呢?
一、gets()(gets_s())
从标准输入(stdin)(指的是键盘输入)读取字符,并将它们作为 C 字符串存储到 str 中,直到达到换行字符或文件末尾。
即gets()函数会一直读取字符直到遇到换行符\n(回车)或文件末尾截至。
需要注意的是:在VS中gets()函数被替代为gets_s()。
int main() { char str[100] = "\0"; gets_s(str); puts(str); return 0; }
这里可以留一下gets_s()与fgets()的区别。
二、fgets()
由上图我们发现,fgets()在输入时会保留键盘中输入的(\n)回车。于是在这里我测试了一下,结果如下:
很明显他输出了两个换行符,这明显与我的预期不同,于是我发现puts()函数在输出时也会输出一个(\n)换行符,如果我把puts()换成printf(),那么就会只有一个fgets()的换行符了。
改用printf():
三、scanf()
scanf("%[^\n]", str);
scanf可以利用上述形势完成带有空格的字符串的输入。