scanf("%[^\n]%*c",str);
%[^\n]:匹配处理\n以外的所有字符
当scanf()函数敲下回车后 \n 还在输入缓存中, 可以用%*c把留在输入缓存区的’\n’吸收掉,防止影响后续输入
%*c:的意思是匹配一个字符(%c 是匹配字符),但不把它赋值给变量。
利用上述实现用解决遇到空格即结束,用scanf()完成gets()函数
#include <stdio.h>
#pragma warning(disable:4996)
#include <stdio.h>
int main(void)
{
char str[100];
int i = 0;
scanf("%[^\n]%*c",str);
printf("%s->", str);
while (str[i] != '\0')
{
i++;
}
printf("%d", i);
return 0;
}
参考文章:
C语言学习笔记——scanf("%*[^\n]%*c"); - 哔哩哔哩
scanf("%[^\n]",str) - 远征i - 博客园
'\0','\n',EOF的区别_蜗壳初学者的博客-CSDN博客