基克船长告诉我scanf是可以读空格的,比赛的时候是不能用gets的,getchar是可以代替gets的。
本菜鸡就去搜了一下,整合如下:
scanf 读一行
#include <stdio.h>
int main()
{
char str[80];
scanf("%[^\n]",str); //读到'\n'结束读取
printf("%s",str);
return 0;
}延申:
//读到'\n'结束读取,存入str,再抛弃一个字符
scanf("%[^\n]%*c",str);//读到'\n'结束读取,并将其读到的数据抛弃,然后再抛弃一个字符(这个字符是'\n')
//此时缓存中不存在任何字符
scanf("%*[^\n]%*c");getchar 这样是读字符 如果是数字的话就用一个游标一个个读 大概也类似吧
int c;
while((c=getchar())!='\n'&&c!=EOF);
//读取一个字符,直到是\n或者是EOF停止
//等价于
scanf("*[^\n]");通过这种方法省略前置字符串
#include <stdio.h>
int main()
{
char c;
//直到遇到字符a停止读取,
//舍弃a
//读取将a后的一个字符存入变量c
scanf("%*[^a]%*c%c",&c);
printf("%c\n",c);
return 0;
}
输入:bcdeaf
输出:f
京公网安备 11010502036488号