scanf(“%[^\n]%*c“,str);

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博客

c语言中gets和scanf的区别,gets 和 scanf 区别_香烟配红唇的博客-CSDN博客

gets和scanf_武当王也123的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/qq_45803449/article/details/127409062