while(scanf("%s",&a))怎么才能结束输入

求解答,while(scanf("%s",&a))怎么才能结束输入
#include<stdio.h>

int main()
{
char a[100];
while(scanf("%s",&a))
{
printf("%s",a);

}
return 0;

}

使用Ctrl+z也不能结束输入

这个是死循环,scanf有int的返回值,返回当前方法中接收的参数个数,你这里会一直返回1,所以是死循环。
while的条件不要使用scanf

看下这篇博客,也许你就懂了,链接:while(~scanf(“%d“, &n))的含义
//加了修饰符遇到换行直接停止执行
//相当于这程序只执行了一次就结束了,除非你不按回车键了
//其它情况自行脑补

#include<stdio.h>
int main()
{
    char a[100];
    while(scanf("%[^\n]",a))
    //加了修饰符遇到换行直接停止执行
    //相当于这程序只执行了一次就结束了,除非你不按回车键了
    //其它情况自行脑补
    {
        printf("%s",a);
    }
    return 0;
}

img

img