fopen打开文件
写文件
#include<stdio.h>
#include<string.h>
int main(void)
{
char s[1024]={0};
FILE *p=fopen("D:\\temp\\a.txt","w");//用写的方式打开一个文件
//"w"意思是如果文件不存在,就建立一个文件,如果文件存在就覆盖
while(1)
{
memset(s,0,sizeof(s));//清空s的内容
//scanf("%s",s);
gets(s);
if(strcmp(s,"exit")==0)
{
break;//如果用户输入的是exit,那么循环退出
}
int len=strlen(s);
s[len]='\n';
fputs(s,p);
}
fputs("hello world\n",p);//向文件写入一个字符串
fputs("aaaaaaaaaaa\n",p);//向文件写入一个字符串
fputs("bbbbbbbbbbb\n",p);//向文件写入一个字符串
fclose(p);//关闭文件
//操作一个文件的步骤和把大象放冰箱是一样的
printf("end\n");
return 0;
}
读文件
#include<stdio.h>
#include<string.h>
int main()
{
char s[1024]={0};
FILE *p=fopen("D:\\temp\\b.txt","r");//用读的方式打开文件
feof(p);//如果已经到了文件结尾,函数返回真
while(!feof(p))//如果没有到文件结尾,那么就一直循环
{
memset(s,0,sizeof(s));
fgets(s,sizeof(s),p);
//第一个参数是内存地址,第二个参数是这块内存的大小,第三个参数是fopen返回的文件指针
printf("%s",s);
}
//fgets(s,sizeof(s),p);
//第一个参数是内存地址,第二个参数是这块内存的大小,第三个参数是fopen返回的文件指针
//printf("%s",s);
fclose(p);
return 0;
}
文本文件加密
#include<stdio.h>
#include<string.h>
void code(char *s)//遍历一个字符串
{
while(*s)
{
(*s)++;
s++;
}
}
int main()
{
char s[1024]={0};
FILE *p=fopen("D:\\temp\\a.txt","r");//用读的方式打开文件
FILE *p1=fopen("D:\\temp\\b.txt","w");//用写的方式打开文件
//feof(p);//如果已经到了文件结尾,函数返回真
while(!feof(p))//如果没有到文件结尾,那么就一直循环
{
memset(s,0,sizeof(s));
fgets(s,sizeof(s),p);
//第一个参数是内存地址,第二个参数是这块内存的大小,第三个参数是fopen返回的文件指针
code(s);
fputs(s,p1);
}
//fgets(s,sizeof(s),p);
//第一个参数是内存地址,第二个参数是这块内存的大小,第三个参数是fopen返回的文件指针
//printf("%s",s);
fclose(p);
fclose(p1);
return 0;
}
文本文件解密
#include<stdio.h>
#include<string.h>
void decode(char *s)//遍历一个字符串
{
while(*s)
{
(*s)--;
s++;
}
}
int main()
{
char s[1024]={0};
FILE *p=fopen("D:\\temp\\b.txt","r");//用读的方式打开文件
FILE *p1=fopen("D:\\temp\\c.txt","w");//用写的方式打开文件
//feof(p);//如果已经到了文件结尾,函数返回真
while(!feof(p))//如果没有到文件结尾,那么就一直循环
{
memset(s,0,sizeof(s));
fgets(s,sizeof(s),p);
//第一个参数是内存地址,第二个参数是这块内存的大小,第三个参数是fopen返回的文件指针
decode(s);
fputs(s,p1);
}
//fgets(s,sizeof(s),p);
//第一个参数是内存地址,第二个参数是这块内存的大小,第三个参数是fopen返回的文件指针
//printf("%s",s);
fclose(p);
fclose(p1);
return 0;
}
//以只读方式打开
#include<stdio.h>
#include<string.h>
int main(void)
{
FILE *p=fopen("D:\\temp\\a.txt","r");//如果文件打开,那么fopen返回文件指针,如果失败,返回NULL
if(p==NULL)
{
printf("file open file\n");
}else
{
printf("file open success\n");
fclose(p);
}
printf("end\n");
return 0;
}
//以追加方式打开
#include<stdio.h>
#include<string.h>
int main()
{
FILE *p=fopen("D:\\temp\\a.txt","a");//用追加的方式打开文件
//"a"的含义是:如果文件不存在,那么就创建这个文件,如果文件存在,就在文件结尾处开始追加
if(p==NULL)
{
printf("file open file\n");
}else
{
fputs("hello",p);
fclose(p);
}
printf("end\n");
return 0;
}
二进制和文本文件模式的区别
fclose
fclose关闭fopen打开的文件
fgetc和putc函数
//fgetc
#include<stdio.h>
#include<string.h>
int main(void)
{
FILE *p=fopen("D:\\temp\\a.txt","r");
if(p==NULL)
{
printf("error\n");
}else
{
char c=0;
//while(c!=EOF)//EOF代表文件最后的一个结束标示
while((c=getc(p))!=EOF)
{
//c=getc(p);//一次只读一个字符
printf("%c",c);
}
fclose(p);
}
printf("Hello World!\n");
return 0;
}
//putc
#include<stdio.h>
int main(void)//写一个字符
{
FILE *p=fopen("D:\\temp\\a.txt","w");
if(p==NULL)
{
printf("error\n");
}else
{
putc('a',p);
putc('b',p);
putc('c',p);
fclose(p);
}
return 0;
}
//加密
#include<stdio.h>
#include<string.h>
#define SEC 5
int main(void)
{
FILE *p=fopen("D:\\temp\\a.txt","r");
FILE *p1=fopen("D:\\temp\\b.txt","w");
if(p==NULL)
{
printf("error\n");
}else
{
char c=0;
while((c=getc(p))!=EOF)
{
c+=SEC;
putc(c,p1);
}
fclose(p);
fclose(p1);
}
return 0;
}
//解密
#include<stdio.h>
#define SEC 5
int main(void)
{
FILE *p=fopen("D:\\temp\\b.txt","r");
FILE *p1=fopen("D:\\temp\\c.txt","w");
if(p==NULL)
{
printf("error\n");
}else
{
char c=0;
while((c=getc(p))!=EOF)
{
c-=SEC;
putc(c,p1);
}
fclose(p);
fclose(p1);
}
return 0;
}