C语言编程小知识三

  1. 关于函数指针:
    函数指针的声明方法为:
    函数类型 (标志符指针变量名) (形参列表);
    注1:“函数类型”说明函数的返回类型,“(标志符指针变量名 )”中的括号不能省,若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:
               int func(int x); /* 声明一个函数 */
               void (*f) (int x); /* 声明一个函数指针 */
               f=func; /* 将func函数的首地址赋给指针f */
    赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。函数名称也是一个指针,但是它是死的,但是函数指针却是活的,可以根据需要让他指向别的函数。但是要求这种函数的参数类型必须保持一致,因此在工作中,原来想着有很多的冗余形参,这一点并不能直接删除,而要保持一致性,这样在加载的过程中才不会出问题。总之在使用的时候一定要十分谨慎。指向函数的指针变量是不能够进行++或者–运算的。指针函数是指返回值是指针的函数,即本质是一个函数。
  2. 文件操作中经常用到的exit(0)需要包含<stdlib.h>,另外一个指向文件的指针pointer,可以用feof(pointer)来判断是否遇到输入文件的结束标志,结束时该值为1.
  3. 关于如何读写字符串:
    函数名     调用形式     功能            返回值
    fgets     fgets(str,n,fp)  从fp指向的文件读入一个    读成功,返回
                 长度为(n-1)的字符串,存放  地址str,失败则返回NULL
                 到字符数组str中                   
    fputs    fputs(str,fp)   把str所指向的字符串写到    输出成功,返回0;
                  文件指针变量fp所指向的    否则返回非0值
                  文件中。
  4. fgets和fputs这两个函数的功能类似于gets和puts函数,只是gets和puts以终端为读写对象,而fgets和fputs函数以指定的文件作为读写对象。
  5. 在C语言中,路径本来应该写成F:\C语言学习程序,但是C语言把"\“作为转义字符的标志,所以在写路径的时候,往往需要写成F:\\C语言学习程序,也就是多一个”\"。
  6. 对文件也可以进行格式化的输入输出,所要用到的函数是fprintf和fscanf,他们的调用方式为:
               fprintf(文件指针,格式字符串,输出列表);
               fscanf(文件指针,格式字符串,输入列表);
    例如:fprintf(fp,"%d,%6.2f",i,f);作用就是将int型变量i和float型变量f的值按照%d和%6.2f的格式输出到fp指向的文件中。
    用fprintf和fscanf函数对磁盘文件读写,使用方便,容易理解,但是由于在输入时要将文件的ASCII码转换为二进制形式在保存在内存变量中,在输出时又要将内存中的二进制形式转换成字符,要花费较多的时间。因此在内存与磁盘频繁交换数据的情况下,最好不用fprintf和fscanf函数,用fread和fwrite函数进行二进制的读写。

猜你喜欢

转载自blog.csdn.net/yunmao2882/article/details/84957336
今日推荐