写入一段文本到文件

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> main()
{
FILE *pf;//文件指针
char path[] = "E:\\1.txt";
pf = fopen(path, "w");//打开一个写入的文件,有就覆盖,没有创建之 if (pf == NULL)
{
printf("文件打开失败");
}
else
{
printf("文件打开成功\n"); char str[] = "hello world, i love cpp";
int length;
length = strlen(str);//获取字符串的长度
int i; for (i = ;i < length;i++)
{
fputc(str[i], pf);//往一个文件写入字符
} fclose(pf);
} system("pause");
}

字符读取,字符串读取

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> main()
{
FILE *pf; pf = fopen("E:\\1.txt", "r"); if (pf == NULL)
{
printf("fail");
}
else
{
int size; while (!feof(pf))//字符读取
{
char ch = fgetc(pf);
putchar(ch);
} size = ftell(pf); printf("size=%d\n", size); printf("\n");
rewind(pf); char str[] = { };
while (fgets(str, , pf) != NULL)//字符串读取
{
puts(str);
} printf("size=%d\n", size); fclose(pf);
} system("pause");
}

字符移位加密

 1 #define _CRT_SECURE_NO_WARNINGS
2
3 #include<stdio.h>
4 #include<stdlib.h>
5
6 void jia(int pass)
7 {
8 FILE *pfr;//读取1.txt
9 FILE *pfw;//写入1jia.txt
10
11 char pathr[100] = "E:\\1.txt";
12 char pathw[100] = "E:\\1jia.txt";
13
14 pfr = fopen(pathr, "r");//用读的模式打开被加密的文件
15 pfw = fopen(pathw, "w");//用写的模式打开要写入加密的文件
16
17 if (pfr == NULL || pfw == NULL)
18 {
19 printf("文件故障,加密失败");
20 return;
21 }
22
23 while (!feof(pfr))//一直读到要加密的文本的末尾
24 {
25 char ch = fgetc(pfr);
26 ch = ch + pass;//字符移位加密
27 fputc(ch, pfw);//写入文本
28 }
29
30 fclose(pfr);
31 }
32
33 void jie(int pass)
34 {
35 FILE *pfr;//读取1jia.txt
36 FILE *pfw;//写入1jie.txt
37
38 char pathr[100] = "E:\\1jia.txt";
39 char pathw[100] = "E:\\1jie.txt";
40
41 pfr = fopen(pathr, "r");//用读的模式打开加密以后的文件
42 pfw = fopen(pathw, "w");//用写的模式打开要写入解密的文件
43
44 if (pfr == NULL || pfw == NULL)
45 {
46 printf("文件故障,加密失败");
47 return;
48 }
49
50 while (!feof(pfr))//一直读到要解密的文本的末尾
51 {
52 char ch = fgetc(pfr);
53 ch = ch - pass;//字符移位加密
54 fputc(ch, pfw);//写入文本
55 }
56
57 fclose(pfr);
58 }
59
60 main()
61 {
62 int pass = 5;
63
64 jia(pass);
65
66 jie(pass);
67
68 system("pause");
69 }

字符异或加密

 1 #define _CRT_SECURE_NO_WARNINGS
2
3 #include<stdio.h>
4 #include<stdlib.h>
5
6 void yjia(int pass)
7 {
8 FILE *pfr;//读取1.txt
9 FILE *pfw;//写入1jiay.txt
10
11 char pathr[100] = "E:\\1.txt";
12 char pathw[100] = "E:\\1jiay.txt";
13
14 pfr = fopen(pathr, "r");//用读的模式打开被加密的文件
15 pfw = fopen(pathw, "w");//用写的模式打开要写入加密的文件
16
17 if (pfr == NULL || pfw == NULL)
18 {
19 printf("文件故障,加密失败");
20 return;
21 }
22
23 while (!feof(pfr))//一直读到要加密的文本的末尾
24 {
25 char ch = fgetc(pfr);
26 ch = ch ^ pass;//异或加密
27 fputc(ch, pfw);//写入文本
28 }
29
30 fclose(pfr);
31 }
32
33 void yjie(int pass)
34 {
35 FILE *pfr;//读取1jiay.txt
36 FILE *pfw;//写入1jiey.txt
37
38 char pathr[100] = "E:\\1jiay.txt";
39 char pathw[100] = "E:\\1jiey.txt";
40
41 pfr = fopen(pathr, "r");//用读的模式打开加密以后的文件
42 pfw = fopen(pathw, "w");//用写的模式打开要写入解密的文件
43
44 if (pfr == NULL || pfw == NULL)
45 {
46 printf("文件故障,加密失败");
47 return;
48 }
49
50 while (!feof(pfr))//一直读到要解密的文本的末尾
51 {
52 char ch = fgetc(pfr);
53 ch = ch ^ pass;//异或加密
54 fputc(ch, pfw);//写入文本
55 }
56
57 fclose(pfr);
58 }
59
60 main()
61 {
62 int pass = 5;
63
64 yjia(pass);
65
66 yjie(pass);
67
68 system("pause");
69 }

打印汉字,必须要连着,否则会出现乱码

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> main()
{
char str[] = "我的"; printf("%c%c", str[], str[]);
//必须要连着,否则会出现乱码
printf("%c %c", str[], str[]); system("pause");
}

//一个汉字2个字节,加上'\0'有3个字节
//2个汉字4个字节,加上'\0'有5个字节

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> main()
{
printf("%d\n", sizeof("我"));
//一个汉字2个字节,加上'\0'有3个字节
printf("%d\n", sizeof("我是"));
//2个汉字4个字节,加上'\0'有5个字节 system("pause");
}
 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> //feek可以移动到指定的位置进行读写
//移动到尾部进行写入,移动到尾部前面几个字节进行写入
main1()
{
FILE *pf = fopen("E:\\1.txt", "r+");//r为读和写而打开文本文件 if (pf == NULL)
{
printf("文件打开失败\n");
}
else
{
printf("文件打开成功\n"); fseek(pf, , SEEK_END);//移动文件指针末尾 fputs("hello", pf);//输出字符串 fflush(pf); fseek(pf, , SEEK_END);//往前移动5个字节 fputs("world", pf);//输出字符串 fclose(pf);
} system("pause");
} //读取后面几个字符
main2()
{
FILE *pf = fopen("E:\\1.txt", "r+");//r为读和写而打开文本文件 if (pf == NULL)
{
printf("文件打开失败\n");
}
else
{
printf("文件打开成功\n"); fseek(pf, -, SEEK_END);//往前移动5个字节 while (!feof(pf))
{
char ch = fgetc(pf);//获取一个字符
putchar(ch);
} fclose(pf);
} system("pause");
} //读取前面几个字符
main3()
{
FILE *pf = fopen("E:\\1.txt", "r+");//r为读和写而打开文本文件 if (pf == NULL)
{
printf("文件打开失败\n");
}
else
{
printf("文件打开成功\n"); fseek(pf, , SEEK_SET);//从文件开头+8的位置开始读取 while (!feof(pf))
{
char ch = fgetc(pf);//获取一个字符
putchar(ch);
} fclose(pf);
} system("pause");
} //修改前面几个字符
main4()
{
FILE *pf = fopen("E:\\1.txt", "r+");//r为读和写而打开文本文件 if (pf == NULL)
{
printf("文件打开失败\n");
}
else
{
printf("文件打开成功\n"); int i; for (i = ;i < ;i++)
{
fputc('', pf);
} printf("\n");
rewind(pf); while (!feof(pf))
{
char ch = fgetc(pf);
putchar(ch);
} fclose(pf);
} system("pause");
} //修改前面几个字符2
main5()
{
FILE *pf = fopen("E:\\1.txt", "r+");//r为读和写而打开文本文件 if (pf == NULL)
{
printf("文件打开失败\n");
}
else
{
printf("文件打开成功\n"); fseek(pf, , SEEK_SET); char ch; for (ch = '';ch <= '';ch++)
{
fputc(ch, pf);
} rewind(pf); while (!feof(pf))
{
char ch = fgetc(pf);
putchar(ch);
} fclose(pf);
} system("pause");
} //fseek修改二进制文件
main()
{
FILE *pf = fopen("E:\\1.txt", "wb+");//r为写而打开一个二进制文件 if (pf == NULL)
{
printf("文件打开失败\n");
}
else
{
printf("文件打开成功\n"); double db[] = { 1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.10 }; fwrite(db, sizeof(double), , pf);//写入一片内存,每个元素8个字节,一共10个到文件 rewind(pf); double dbr[]; fread(dbr, sizeof(double), , pf);//读取二进制 int i;
for (i = ;i < ;i++)
{
printf("%f\n", dbr[i]);
} fclose(pf);
} system("pause");
}

打开文件,一定要关闭文件。

fclose有一个动作,就是将文件缓冲区的内容,写入到文本。如果程序意外关闭,没有调用fclose,文件数据丢失

r读,w写,+可读可写,b二进制,t就是文本

既没有b也没有t,不强调是二进制还是文本,普遍适用

fopen

//若文件不存在,则新建文件
//若文件存在,则文件长度清零,则该文件内容会消失
//wb只允许写数据

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> //若文件不存在,则新建文件
//若文件存在,则文件长度清零,则该文件内容会消失
//wb只允许写数据
main()
{
char path[] = "E:\\WB.txt"; FILE *pf = fopen(path, "wb");//按照写的方式打开文件 if (pf == NULL)
{
printf("fail");
}
else
{
printf("succes\n"); float fl[] = { 1.0,2.0,3.0,4.0,5.0 }; fwrite(fl, , , pf);//将数组这一片内存写入文件 rewind(pf);//移动指针到开头 float flx[] = { 0.0 }; int res = fread(flx, , , pf);//将文件读入内存 printf("%d\n", res); if (res != )
{
printf("fail");
}
else
{
printf("succes\n");
}
fclose(pf);//关闭文件指针
}
system("pause");
}

fopen

//若文件不存在,则新建文件
//若文件存在,则文件长度清零,则该文件内容会消失
//w+模式既能写也能读

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> //若文件不存在,则新建文件
//若文件存在,则文件长度清零,则该文件内容会消失
//w+模式既能写也能读
main()
{
char path[] = "E:\\WJ.txt"; FILE *pf = fopen(path, "w+");//按照w+写的方式打开文件 if (pf == NULL)
{
printf("fail");
}
else
{
printf("succes\n"); fputs("hello", pf);//写入 rewind(pf);//文件指针移动到开头 char ch = fgetc(pf);//从文件读取一个字符保存到ch
//fgetc如果执行成功,就会返回读取的字符 printf("%d\n", ch);//执行失败,返回-1 putchar(ch); putchar(ch); fclose(pf);//关闭文件指针
} system("pause");
}

fopen

r+打开可读写的文件,该文件必须存在,存在就可以读且写

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> //r+打开可读写的文件,该文件必须存在,存在就可以读且写
main()
{
char path[] = "E:\\Z.txt"; FILE *pf = fopen(path, "r+");//按照写的方式打开文件 if (pf == NULL)
{
printf("fail");
}
else
{
printf("succes\n"); while (!feof(pf))//判断文件是否到了末尾
{
char ch = fgetc(pf);//从文件读取一个字符保存到ch
putchar(ch);//输出这个字符
} int res = fputc('A', pf);//写入不会报错,但是写入会失败 printf("%d\n", res); if (res == -)
{
printf("fail");
}
else
{
printf("succes");
}
fclose(pf);//关闭文件指针
} system("pause");
}

fopen

w写

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> //若文件不存在,则新建文件
//若文件存在,则文件长度清零,则该文件内容会消失
//w模式只能写,不能读
main()
{
char path[] = "E:\\W.txt"; FILE *pf = fopen(path, "w");//按照写的方式打开文件 if (pf == NULL)
{
printf("fail");
}
else
{
printf("succes\n"); fputs("hello", pf);//写入 rewind(pf);//文件指针移动到开头 char ch = fgetc(pf);//从文件读取一个字符保存到ch
//fgetc如果执行成功,就会返回读取的字符 printf("%d\n", ch);//执行失败,返回-1 putchar(ch); putchar(ch); fclose(pf);//关闭文件指针
} system("pause");
}

fopen

r读

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> //r该文件必须存在,不存在打开失败
//打开成功,我们就可以进行读的操作
//进行写的操作的时候,不会提示错误,但是会操作失败
main()
{
char path[] = "E:\\X.txt"; FILE *pf = fopen(path, "r");//按照读的方式打开文件 if (pf == NULL)
{
printf("fail");
}
else
{
printf("succes\n"); while (!feof(pf))//判断文件是否到了末尾
{
char ch = fgetc(pf);//从文件读取一个字符保存到ch
putchar(ch);//输出这个字符
} int res = fputc('A', pf);//写入不会报错,但是写入会失败 printf("%d\n", res); if (res == -)
{
printf("fail");
}
else
{
printf("succes");
}
fclose(pf);//关闭文件指针
} system("pause");
}

例16.1

把从键盘输入的文本按原样输出到名为 file_a.dat 的文件,用字符@作为键盘输入结束标志。

(1)打开文件。

(2)从键盘输入一个字符。

(3)判断输入的字符是否是@。若是,结束循环,执行步骤(7)。

(4)把刚输入的字符输出到指定的文件中。

(5)从键盘输入一个字符。

(6)重复步骤(3)至(5)。

(7)关闭文件。

(8)程序结束。

 #include<stdio.h>
#include<stdlib.h> main()
{
FILE * fpout;
char ch;
if ((fpout = fopen("file_a.dat", "w")) == NULL)
{
printf("Can't open this file!\n");
exit();
}
ch = getchar();
while (ch != '@')
{
fputc(ch, fpout);
ch = getchar();
}
fclose(fpout);
}

例16.2

把一个已存在磁盘上的 file_a.dat 文本文件中的内容原样输出到终端屏幕上。

(1)打开文件。

(2)从指定文件中读入一个字符。

(3)判断读入的是否是文件结束标志。若是,结束循环,执行步骤(7)。

(4)把刚输入的字符输出到终端屏幕。

(5)从文件中再读入一个字符。

(6)重复步骤(3)至(5)。

(7)关闭文件。

(8)程序结束。

 #include<stdio.h>
#include<stdlib.h> main()
{
FILE * fpin;
char ch;
if ((fpin = fopen("file_a.dat", "r")) == NULL)
{
printf("Can't open this file!\n");
exit();
}
ch = fgetc(fpin);
while (ch != EOF)
{
putchar(ch);
ch = fgetc(fpin);
}
fclose(fpin);
}

123

全国计算机等级考试二级教程-C语言程序设计_第16章_文件的更多相关文章

  1. 全国计算机等级考试二级教程-C语言程序设计_第4章_选择结构

    switch什么时候用break,什么时候不用break 调用break:一次执行一个分支,输入一个数据,对应一个级别 不调用break:连续执行多个分支 if...else 可以处理任何情况,大于小 ...

  2. 全国计算机等级考试二级教程-C语言程序设计_第8章_地址和指针

    面试: unsigned int *p1 = &num; int *p2 = &num; #define _CRT_SECURE_NO_WARNINGS #include<std ...

  3. 全国计算机等级考试二级教程-C语言程序设计_第15章_位运算

    位运算,不适用于实数,仅仅适用于整数.字符. C语言的位运算只能操作整数.字符,实数是指数方式表示的,不适用于位运算. #define _CRT_SECURE_NO_WARNINGS #include ...

  4. 全国计算机等级考试二级教程-C语言程序设计_第9章_数组

    四维数组,可用于航天卫星,三维+时间 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> ...

  5. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  6. 全国计算机等级考试二级教程-C语言程序设计_第10章_字符串

    字符型指针数组 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //参数中,int a ...

  7. 全国计算机等级考试二级教程-C语言程序设计_第5章_循环结构

    for循环结构的嵌套 外层循环每循环一次,内层循环会完整循环一次. 外层循环是竖. 内层循环是横. for, do...while, while的选择: 如果有固定次数,如阶乘! ,判断素数,用 fo ...

  8. 全国计算机等级考试二级教程-C语言程序设计_第3章_顺序结构

    1输入两个整数给变量x和y:然后输出x和y:在交换x和y中的值后,在输出x和y. #include <stdio.h> main() { int x, y, t; printf(" ...

  9. 全国计算机等级考试二级教程-C语言程序设计_第2章_C程序设计的初步知识

    正负号与被除数一致. 3 % (-5) == 3 (-3) % 5 == -3 不用求余运算符,求出余数. int x, y; 答:x - x / y * y; const int i = 10; c ...

  10. 全国计算机等级考试二级教程-C语言程序设计_第7章_函数

    函数执行,从右到左执行 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> main() ...

随机推荐

  1. Linux操作系统安全(一)

         谈到Linux,大伙最先想到的是这是一个由全世界的优秀的黑客共同开发的一个开源操作系统,目前在服务器领域有着非常广的使用,同时,基于Linux操作系统而开发的Android系统也已经占据了移 ...

  2. X光机的原理及构造

    一.X射线的发现 1895年德国物理学家伦琴(W.C.RÖntgen)在研究阴极射线管中气体放电现象时,用年伦琴荣获物理学第一个诺贝尔奖金.科学总是在不断发展的,经伦琴及各国科学家的反复实践和研究,逐 ...

  3. MySQL_数据分页查询(limit用法)

    取前5条数据 select * from table_name limit 0,5 或 select * from table_name limit 5 取第11条到第15条数据,共5条 select ...

  4. css+div布局案例

    给最外层的div命名一个class 有针对性的进行css布局. <div class="joinus-info"> <div class="form-t ...

  5. select自动选中

    //筛选 var typeid = "<!--{$typeid}-->"; var bigclassid = "<!--{$bigclassid}--& ...

  6. 关于CMCC(中国移动)、CU(中国联通)、CT(中国电信)的一些笔记

    一.三大运营商网络 CMCC(ChinaMobileCommunicationCorporation):GSM(2G).TD-SCDMA(3G).TD-LTE(4G); CU(China Unicom ...

  7. #include <boost/array.hpp>

    Boost的array,元素可以是std::string #include <iostream> #include <string> #include <boost/ar ...

  8. ILSpy,DLL反编译工具,学习与了解原理的好帮手

    你是否一直苦于找到了好的dll却只知道怎么使用而不知道其原理. 你是否在使用一个dll的时候发现它在一些参数时报错了却没法解决. 你是否想成为一个优秀的.net开发,成为一个优秀的系统制造者. 那你需 ...

  9. WCF通信过程

    无废话WCF入门教程二[WCF应用的通信过程] 一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Ser ...

  10. asp.net几种<% %>用法

    在asp.net应用程序中,在asp.net页面常用的<%@ %>.<%# %>.<%= %>.在全球化的项目中使用<%$ %>绑定资源项目,在asp. ...