C语言学习笔记
大学时候学习了点C语言,本就学得浅显,现在也忘得差不多。只是记得几个循环,简单的输入输出,现在重新系统学习C语言,这么多年的失败学习经验告诉我,学习某个方面的东西,一定要系统且要注重细节,即掌握总分总的知识架构,而且要反复多次学习。
这次学习的内容有:数据类型,数组,指针,函数,文件,结构体和共用体等,后面关于C语言的知识会随时补充。
另需注意C语言编程格式:
一.数据类型
1.常量和变量
2.类型转换
二.数据输入输出
char c[10];
scanf("%s",c);//字符串中不能有空格,否则只读到第一个空格前的内容,但是字符串前面可以有空格。
#include <stdio.h> #include <string.h> int main(){ int n; int i=0; char c; char s[10]; scanf("%d",&n); s[n]='\0'; while(n>0){ fflush(stdin); scanf("%c",&c); s[i++]=c; n--; } printf("%s",s); return 0; }
#include <stdio.h> #include <string.h> int main(){ int n; int i=0; char c; char s[10]; scanf("%d",&n); s[n]='\0'; while(n>0){ scanf("%c",&c); if(c=='\n') continue; s[i++]=c; n--; } printf("%s",s); return 0; }
以上两套代码都可正常换行输入。fflush(stdin)函数非常重要,在以后的多次换行输入程序中都要用上!
说明scanf()函数会读取上一次存留的换行符‘\n’ ,换行符会读入到缓冲队列。
for(i = 0; i < 10; i++) { scanf("%d", &num[i]); } scanf("%d %d %d %d %d %d %d %d %d %d",&c[0],&c[1],&c[2],&c[3],&c[4],&c[5],&c[6],&c[7],&c[8],&c[9]);
上面两个接受是等价的
使用getchar()函数:
#include <stdio.h> #include <string.h> int main(){ int n; int i=0; char c; char s[10]; scanf("%d",&n); s[n]='\0'; while(n>0){ c=getchar(); if(c=='\n') continue;//退出本次判断,继续重新循环 s[i++]=c; n--; } printf("%s",s); return 0; }
结果:
当程序调用getchar时.程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。打个比方,键盘缓冲区就像是一条水管连着你的程序,程序调用getchar()函数用户输入字符就相当于往水管里注水,这个水注多少取决于你输入多少,当你按回车停止注水时,getchar()函数才会开始从键盘缓冲区,也就是我们的水管里取水,那每次只会读一个字符也就是每次取一定量的水,当你在这之后继续调用getchar()函数时,会接着在水管里取上次没用完的水,因为你的水管没清空(缓冲区的刷新),那这个阶段就不用你再输入了,因为一调用getchar()函数就有水可取嘛,直到水管里没水了,你还调用getchar()函数,那这个时候你就得注水了也就是程序会等你按键。
scanf()函数和getchar()函数在吸收单字符时功能和过程都一样,都会吸收上一次残留在缓冲区中的换行符。
- 点赞
- 收藏
- 分享
- 文章举报
- C语言学习笔记
- C语言学习笔记--C常量
- 重新学习C语言笔记--指针
- C语言学习笔记(六)
- 2、C语言深度学习笔记--C语言概述
- 【学习笔记】【C语言】typedef
- C语言学习笔记:指针函数和函数指针的浅析
- 华清远见C语言学习笔记八
- C语言学习笔记-指针-郝斌老师讲解
- Algorithm学习笔记 --- C语言实现二分查找
- c++学习笔记(一)从c语言到c++
- C语言学习笔记:02_输入输出函数
- 学习笔记(07):4.5.数组&字符串&结构体&共用体&枚举-C语言专题第5部分-4.5.12.共用体union...
- 黑马程序员-IOS学习笔记-C语言基础其他数据类型及总结
- C语言Printf()&scanf() 学习笔记
- 重新学习C语言笔记--文件(2)
- 7、C语言深度学习笔记--运算符
- C语言学习笔记之 第一讲:C语言概述
- C语言学习笔记字符读入读出
- c语言深度剖析之学习笔记(二)------------符号