C处理文件有2种方式:文本和二进制
1. 打开文件
使用fopen()函数来打开一个文件
FILE *fp;
fp = fopen("filepath", "r");
fclose(fp);
FILE
FILE指针不是指向实际的文件,FILE是一个结构体,它记录了文件的相关信息,如在内存缓冲区的位置啥的
fopen("path", "r")
a) fopen()函数成功打开一个文件将返回一个FILE指针,如果返回的是一个空指针NULL,代表文件打开失败。
b) fopen()函数的参数1是文件的位置,参数2是打开的方式(包括 r 读, w 写, a 追加, r+,w+,a+ 这些都是以文本形式处理。 在这些后面加上b,如rb是以二进制方式处理)
fclose(fp)
a) fclose()函数将关闭文件,刷新缓冲区。成功关闭将返回0
2. 读取和输出字符
int ch;
while ( (ch = getc(fp)) != EOF)
putc(ch, stdout);
getc(fp)
getc()函数,读取文件流位置的下一个字符,增加文件位置指示器
putc(ch, stdout)
a) putc()参数1是要输出的字符,参数2是要输出的位置
b) stdin, stdout, stderr 标准输入输出设备的指针文件
fgets(), fputs()
fgets()接受3个参数
第一个参数用于存储输入的地址(char * 型),第二个参数是字符串的最大长度,第3个参数是文件指针
fgets(buf, MAX, fp)
fputs(buf, fp)
fprintf(), fscanf()
fscanf(fp, "%s", words)
fprintf(stderr, "Error closeing file\n")
3. 随机存取
fseek() , ftell()
fseek(fp, 0L, SEEK_END);
参数1, 用来搜索的文件的指针,这个文件已经被fopen()打开
参数2, 称为偏移,表示偏移开始位置多远。这个值必须是long,可以是正负数或0
参数3, 定义开始位置
SEEK_SET 文件开始
0L
SEEK_CUR 当前位置
1L
SEEK_END 文件结尾
2L
返回值为0代表正常,-1表示有error
ftell() 返回当前文件位置
fgetpos(), fsetpos函数 用来处理大文件