C语言文件操作复习
一.打开文件
fopen()
FILE*fopen(const char *path,const char*mode)
路径注意点
一般复制过来的路径都是\ ,但是C语言中\ 是转义字符的作用,所以要用\\ 或/
模式
对文本文件
模式 | 解释 |
---|
“r” | 只读模式,文件必须存在,不存在就报错 | “r+” | 读写方式,文件必须存在,不存在就报错 | “w” | 只写方式,文件不存在就创建新的文件 | “w+” | 读写方式,文件不存在就创建新的文件 | “a” | 追加(写),文件存在就从文件末尾开始写,不存在就新建文件 | “a+” | 追加(读写),文件存在就从文件末尾开始写,不存在就新建文件 |
返回值
先试一试基本的"r"
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*fp;
fp=fopen("C:\\Users\\86171\\Desktop\\TMP.txt","r");
if(fp == NULL)
{
printf("打开失败");
}
else
{
printf("打开成功");
}
fclose(fp);
return 0;
}
fp指向文件地址
二.读写操作
按字符读写
读
从文件中读取一个字符
fgetc: fgetc(FILE *stream);
-
功能:从指定文件流中获得字符 -
参数 *stream 指定的文件指针 -
返回值
-
成功:对应字符的ascii值 -
失败
-
EOF(文件结束)
? 文件的结束标志就是EOF,其实就是-1
-
error(错误) -
都是-1
把那个文件和.c 放到同一路径下面,就不用写绝对路径了
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*fp;
char ch=0;
fp=fopen("TMP.txt","r");
if(fp == NULL)
{
printf("打开失败\n");
}
else
{
printf("打开成功\n");
ch=fgetc(fp);
printf("%c\n",ch);
fclose(fp);
}
return 0;
}
运行结果:
读取文件的每个字符
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*fp;
char ch=0;
fp=fopen("TMP.txt","r+");
if(fp == NULL)
{
printf("打开失败\n");
}
else
{
printf("打开成功\n");
ch=fgetc(fp);
while(!feof(fp))
{
printf("%c",ch);
ch=fgetc(fp);
}
fclose(fp);
}
return 0;
}
写
? 把mode改成"r+"
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*fp;
char ch=0;
fp=fopen("TMP.txt","r+");
if(fp == NULL)
{
printf("打开失败\n");
}
else
{
printf("打开成功\n");
fputc('A',fp);
fclose(fp);
}
return 0;
}
第一个字符被覆盖了
|