暑假学习阶段笔记
scanf的进一步了解
刚开始用scanf的时候只知道其基本的功能,对其内部的具体过程一无所知,后来看了林老师的视频https://blog.csdn.net/vincent040/article/details/83575886,才有了进一步的认识,我没买,我是粤嵌的学生,嘻嘻
scanf函数较为傲娇,只搬自己想搬的,不匹配就遛了,注意这里,不匹配就遛了,不带走一丝云彩,你写了半天,他也不管所以,当我们有多个scanf语句依次执行的时候,经常喜欢出现这种情况,前面的第一个函数的内容刚刚输完,第二个还没数,就跳到第三个去了,这不是系统的问题,而是,scanf从内存区中拿到了自己想要的东西,已经结束了。
当我们想要输入一个"字符串"的时候,我们使用scanf(“%s”,a),我们会遇到输入空格就停止的问题,对的,
关于scanf的一片博客
scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
如果你还是坚持使用scanf,那么它提供了这么一种方法
#include <stdio.h>
int main()
{
char str[80];
scanf("%[^\n]",str); //读到'\n'结束读取
printf("%s",str);
return 0;
}
利用正则表达式来解决问题(我猜的,哈哈)
面对字符串的输入,我还是建议 gets(),
char *gets(char *s);
linux man手册中的解释
gets() reads a line from stdin into the buffer pointed to by s until either a terminating
newline or EOF, which it replaces with a null byte ('\0'). No check for buffer overrun is
performed (see BUGS below).
英语六级还在考,大致翻译一下,gets()从标准输入(stdin)写给缓冲区(buffer)的内容中读取一行。这行内容以文件终止符(end of file)或者 换行符(teminating newling)结束,并且最后的内容会被加上’\0’,具体就是,你只管输入,输完了,按一下enter键它就开始读内容,最后在字符串末尾加上’\0’,
完美,就用它了