scanf语句中这些符号的使用是什么意思?

问题描述 投票:0回答:1

问题出在第四个

scanf
。请帮助我理解
scanf("%[^\n]%*c",c)
的用法。

char a; char b[30]; char c[50];

scanf("%c", &a);
scanf("%s",b);
scanf("\n");

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


printf("%c \n",a);
printf("%s \n",b);
printf("%s \n",c);
return 0;
c scanf
1个回答
0
投票

%[
开始匹配一组字符。

^

 
反转开始该组匹配,匹配该组中找到的任何字符。

]

 终止集合。

效果:

%[^\n]

匹配尽可能多的字符,即
不是换行符。

%c

 匹配任何字符。添加 
*
(如 
%*c
)可防止 
scanf
 将该字符分配给任何变量。

总体效果是

"%[^\n]%*c"

 读取尽可能多的字符,将这些字符存储在缓冲区中,直到到达换行符。然后它消耗并丢弃换行符。

© www.soinside.com 2019 - 2024. All rights reserved.