首页 > 代码库 > C语言难点1之输入输出,链接,字符串操作

C语言难点1之输入输出,链接,字符串操作

C语言难点1之输入输出,链接,字符串操作

  最近发现写了一段时间的C之后,还是有一些点并没有很好的get,我就想总结出来,写个系列博客,自己也好好的整理一下思路。这个系列主要出自三本书:《C专家编程》,《C陷阱和缺陷》,《C和指针》。有兴趣的同学可以好好看一下这几本书,对于打好C语言的基础是个非常不错的几本书。

1 一些输入输出的格式
对应的printf();和scanf()函数;在这里我给出常用的scanf格式码,和printf()函数也是一样的。
 
 
 
技术分享

 

 

2 getchar()函数的使用;
getchar()函数从标准输入读取一个字符并返回它的值。如果输入中不再存在任何字符,函数就会返回常量EOF(在stdio.h中定义),用于提示文件的结尾。
 
     getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了。
     实际上是 输入设备->内存缓冲区->程序getchar  。
     你按的键是放进缓冲区了,然后供程序getchar  你有没有试过按住很多键然后等一会儿会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区.  键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到‘\n‘.要理解这一点,之所以你输入的一系列字符被依次读出来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一个字符.如果需要取消‘\n‘的影响,可以用getchar();来清除,这里getchar();只是取得了‘\n‘但是并没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符.还要注意的是这里你在键盘上输入ssss看到的回显正是来自于getchar的作用,如果用getch就看不到你输入了什么.
 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int test;
 6     while((test=getchar())!=EOF &&test!=\n)
 7     {
 8         printf("%d\n", test);
 9     }
10     return 0;
11 }

技术分享

 

3 一些指针的声明
我之前一直好奇
int *a  和 int* a到底是怎么回事?
 
     其实这两个声明具有一样的意思,都是声明一个指向整型的指针变量a。但是后者并不是一个好的方法,因为在声明几个变量的时候容易出错。比如 int* a,b,c;实际上你只是想把a声明为指针变量。

 

 

4 链接属性
在变量的作用域中,我们要注意范围,而链接属性遇着息息相关。

技术分享

 

 

5 2维数组作为参数的问题
     2维数组作为参数在很多地方都会用到,但是这个问题非常容易出错。
注意作为参数的时候必须要指定第二个维度的大小。例如a[][10]这样可以作为参数;
但是如果是这样的:a[][].就不能作为形参。
 
 
6 字符串长度
 
     在库函数中有一个strlen函数用来得到字符串的长度,但是在使用的时候要注意,否则很容易出错;下面举例来说明:
技术分享

 

 

7 字符分类
 
就是库函数中包括一些字符的函数,可以很方便的对字符进行一些基本的操作。
技术分享

相关联的是一些内存操作,功能类似,但是更加强大。

 技术分享

技术分享

技术分享

 

 
8 &和&&,|和||的区别
 
     &是按位运算符;都是与运算。
     &&是逻辑运算符;
      |是按位运算符;都是或运算。
     ||是逻辑或算符;

 

 

9 符号的细节。
 
在使用多字符符号的时候,注意空格的存在,不能再多字符符号中乱留空格,会造成意思完全改变

 技术分享

 

 

 

 

 

C语言难点1之输入输出,链接,字符串操作