写入一段文本到文件

 #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. XML的Schema约束

    XSD文档至少要包含:schema根元素和XML模式命名空间的定义.元素定义.需要注意的是XSD中必须定义一个且只能定义一个schema根元素,根元素中包括模式的约束,XML模式命名空间的定义,其他命 ...

  2. python学习day3

    目录: 1.集合set 2.计数器 3.有序字典 4.默认字典 5.可命名元组 6.队列 7.深浅拷贝 8.函数 9.lambda表达式 10.内置函数 一.集合set set是一个无序且不重复的元素 ...

  3. UDP包的大小与MTU

    在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对像ICQ一类的发送聊天消息的情况作分 ...

  4. 关于URL编码的问题

    在进行WEB开发时,字符集编码常常困扰着我们.我们需要区分两种情况,一是URL编码,二是HTTP Body编码.这两种编码所处理的机制不同. URL编码和解码 客户端负责对URL编码,服务端负责解码. ...

  5. linux之SQL语句简明教程---DISTINCT

    SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料.这将把所有的资料都抓出,无论资料值有无重复.在资料处理中,我们会经常碰到需要找出表格内的不同资料值的情况.换句话说,我们需要知道这个表格 ...

  6. dojo demo, server验证username是否已经被使用

    这个demo有助于理解JS与server的协同工作. 文档结构如上图.  主要是三个文件: main.js  table.html validateUserName.jsp (代码见文章末尾) 页面打 ...

  7. mahout源码分析之Decision Forest 三部曲之二BuildForest(1)

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. BuildForest是在mahout-examples-0.7-job.jar包的org\apache ...

  8. string.Format组合跳转路径

    string url = this.ResolveClientUrl("~/page/bn_stu.aspx"); string str = string.Format(" ...

  9. log4j是什么

    一.什么是log4jLog4j 是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事 件记录器.UNIX S ...

  10. 利用DreamweaverCS5制作一个含有动态标题的教程

    DreamweaverCS5怎么制作一个含有动态标题?做一个网页就先要做一个标题,一个好标题会让网页让人印象深刻,有动态的标题会让网页更生动,下面我就介绍一下怎么制作一个含有动态的标题   做一个网页 ...