基克船长告诉我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