由于转专业基本只有模拟题,也不涉及复杂的算法,所以本文不区分先后顺序的记录一些常用的方法。仅供自己娱乐(笑)。
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); }
文件部分先写这么多。