打开文件
fopen(文件名,文件的打开方式)
- r:对文本文件只读方式(字符ascii)
- w:对文本文件只写方式(字符ascii)
- a:对文本文件追加方式(字符ascii)
- r+,w+,a+对文本文件可读可写方式
- rb:对二进制文件只读方式
- wb:对二进制文件只写方式
- ab:对二进制文件追加方式
- rb+,wb+,ab+对二进制文件可读可写方式
#include<stdio.h>
int main(){
FILE *p;
//p=fopen("abc.dat","w");
p=fopen("D:\\cccc\\abc.dat","w");
if(p==NULL){
printf("error!");
}else{
printf("OK");
}
return 0;
}
关闭文件
一个打开的文件,需要fclose(指向文件的指针);进行关闭,如果不对文件进行关闭,有可能丢失文件的数据。
关闭文件就是将文件缓冲区当中的数据输出到磁盘或输入到内存。
#include<stdio.h>
int main(){
FILE *p;
//p=fopen("abc.dat","w");
p=fopen("D:\\cccc\\abc.dat","w");
if(p==NULL){
printf("error!");
}else{
printf("OK");
}
//......
fclose(p);
return 0;
}
按字符读写文件
程序---->磁盘
ch=getchar() putchar(ch) gets() puts()
fgets(p)
:从指针p指向的文件读入一个字符。
fputc(ch,p)
:把字符ch写到文件指针p所指向的文件中。
例:用fputc函数从键盘逐个输入数据,然后写到磁盘中。
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *p;
p=fopen("abc.dat","w");
//p=fopen("D:\\cccc\\abc.dat","w");
if(p==NULL){
printf("error!");exit(0);
}
printf("请输入字符,以#结束");
char ch=getchar();
while(ch!='#'){
fputc(ch,p);
putchar(ch);
ch=getchar();
}
fclose(p);
return 0;
}
按照字符读文件
例:读出abc.dat中的文件内容。
#include<stdio.h>
#include<stdlib.h>
#define EOF -1;
int main(){
FILE *f;
f=fopen("abc.dat","r");
if(f==NULL){
printf("error!");
exit(0);
}
char ch=fgetc(f);
while(!feof(f)){//EOF=-1
putchar(ch);
ch=fgetc(f);
}
fclose(f);
return 0;
}
向文件读写一个字符串
fgets(str,n,p)
:从指针指向的文件中读入一个长度为n的字符串,将此字符串存放到字符数组str中。fputs(str,p)
:把str所指的字符串写到文件指针p指向的文件中。
例:将3各字符串存储到文件中。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
FILE *p;
p=fopen("abc.dat","r");
if(p==NULL){
printf("error!");
exit(0);
}
char str[3][10];
strcpy(str[0],"hello");
strcpy(str[1],"china");
strcpy(str[2],"world");
for(int i=0;i<=2;i++){
fputs(str[i],p);fputs("\n",p);
printf("%s\n",str[i]);
}
fclose(p);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
FILE *p;
char str[3][10];
int i=0;
p=fopen("abc.dat","r");
if(p==NULL){
printf("error!");
exit(0);
}
while(fgets(str[i],10,p)!=NULL){
printf("%s",str[i]);
i++;
}
fclose(p);
return 0;
}