; char s[1024] = { 0 };
FILE *p = fopen("/home/luanbo/c_text/a.txt", "r");//用读的方式打开一个文件
//feof(p);//如果已经到了文件结尾,函数返回真。用feof可以输出每行的内容
while(!feof(p)) //如果没有到文件结尾,那么就一直循环
{
memset(s, 0, sizeof(s));
fgets(s, sizeof(s), p); //第一个参数是一个内存地址,第二个参数是这块内存的大小
printf("%s",s);
}
fclose(p);
return 0;
}
1.3.4 文件加密
将a文件的内容拷贝到b文件里
int main()//
{
char s[1024] = { 0 };
FILE *p = fopen("/home/luanbo/c_text/a.txt", "r");
FILE *p1 = fopen("/home/luanbo/c_text/b.txt", "w");
//feof(p);
while(!feof(p))
{
memset(s, 0, sizeof(s));
fgets(s, sizeof(s), p);
fputs(s, p1);
}
fclose(p);
fclose(p1);
return 0;
}
文件加密:在从a文件往b文件拷贝的过程中对每一行进行一些操作,从而实现文件内容的加密
void code(char *s)
{
while(*s)
{
(*s)++;
s++;
}
}
int main()//文件加密
{
char s[1024] = { 0 };
FILE *p = fopen("/home/luanbo/c_text/a.txt", "r");
FILE *p1 = fopen("/home/luanbo/c_text/b.txt", "w");
while(!feof(p))
{
memset(s, 0, sizeof(s));
fgets(s, sizeof(s), p);
code(s);//调用该函数,将字符串中的每一位分别加1,对文件内容进行加密
fputs(s, p1);
}
文件解密:将b文件中的内容拷贝到另一个文件中,在拷贝过程中将加密的操作过程逆置,比如原先是+的,这里-。
void decode(char *s)
{
while(*s)
{
(*s)--;
s++;
}
}
int main()//文件解密
{
char s[1024] = { 0 };
FILE *p = fopen("/home/luanbo/c_text/b.txt", "r");
FILE *p1 = fopen("/home/luanbo/c_text/c.txt", "w");
while(!feof(p))
{
memset(s, 0, sizeof(s));
fgets(s, sizeof(s), p);
decode(s);
fputs(s, p1);
}
fclose(p);
fclose(p1);
return 0;
}
1.4 二进制和文本模式的区别
1、在windows系统中,文本模式下,文件以“\r\n”代表换行。若以文本模式打开文件,并用fputs等函数写入换行符“\n”时,函数会自动在“\n”前面加上“\r”。即实际写入文件的是“\r\n”。
2、在类Unix/Linux系统中文本模式下,文件以“\n”代表换行。所以Linux系统中在文本模式和二进制模式下并无区别。
1.5 fclose
fclose关闭,fopen打开的文件
1.6 getc和putc函数
getc一次读取一个字符,putc一个写一个字符
1.6.1 getc读字符
int main()
{
FILE *p = fopen("/home/luanbo/c_text/a.txt", "r");
if(p == NULL)
{
printf("error\n");
}
else
{
char c = 0;
while((c != EOF)//EOF代表文件最后的一个结束标识
{
c