不定期更新--转专业前总结一些可能有用的函数及其用法(来自c primer plus)以便复习

  由于转专业基本只有模拟题,也不涉及复杂的算法,所以本文不区分先后顺序的记录一些常用的方法。仅供自己娱乐(笑)。

  1.文件相关操作。

  

FILE *fp;
fp=fopen("filename","r");

  i.定义一个指向类型FILE的指针,随后进行一些操作。

    fopen里常用的打开文件模式参数:"r" "w" "a" "r+" "w+" "a+"。其中"w+"可读指的是读写进去的,以任何"w"方式打开都会清空文件。所谓"r"的可写指的是如果要写,那么会清空文件从头开始。

    fopen返回文件指针,若没有成功打开返回NULL。因此经常这样写:

if(fp){
    ...
}

  ii.getc()和putc()。

  

ch=getc(fp) //从文件中读一个char
ch=putc(ch,fpout)//同理

  iii.fclose()。有始有终,开了就要关,良好习惯。

if(fclose(fp)!=0)
printf("Error in closing file.\n")//关闭成功返回0,这段代码检查是否关闭成功

  iv.fprintf(),fscanf(),rewind(),fgets(),fputs()

  fprintf(),fscanf()与printf(),scanf()类似,只是第一个参数为文件指针。rewind()可以返回到文件的开头,在"a+"模式里,用于完成一系列追加操作后,返回文件的开头来遍历文件。

扫描二维码关注公众号,回复: 10143445 查看本文章
rewind(fp);

  fgets()中,第一个参数表示储存输入的地址(char *),第二个参数表示待输入字符串大小(而非长度),第三个参数表示文件指针。

  fgets()会自动添加一个'\0'。如果遇到换行,会在'\0'之前保留换行符。

  fgets()在读到EOF会返回NULL,因此可以用这个来判断是否到了文章结尾。

fgets(buf,STLEN,fp);//读取STLEN-1个字符
fputs(buf,fp);

  v.fseek(),ftell()

  直接给出示例:

fseek(fp,0L,SEEK_SET);//定位至文件开始处
fseek(fp,10L,SEEK_SET);//定位至文件中的第10个字节
fseek(fp,2L,SEEK_CUR);//从文件当前位置前移2个字节
fseek(fp,0L,SEEK_END);//定位至文件结尾
fseek(fp,-10L,SEEK_END);//从文件结尾处回退10个字节

  如果一切正常,fseek()返回0,否则(如移动距离超出文件范围)返回-1。

  ftell()返回当前位置(返回类型long)如:

fseek(fp,0L,SEEK_END);
long last=ftell(fp);
for(count =1L;count<=last;count++){
    fseek(fp,-count,SEEK_END);//go backward
    ch=getc(fp);
}

文件部分先写这么多。

猜你喜欢

转载自www.cnblogs.com/hardworkingshow/p/12563178.html