文件操作(2)

 补充

在开始文件的顺序读写之前,还有一些值得注意的地方。

模式化字符串"w"和"a",都是以写的模式打开文件,但是使用''w''打开文件会使现有文件的长度截为零,也就是会清楚现有文件内容,而以''a''模式打开文件则是在现有文件的末尾添加内容

例如:

	char ch = '1';
	FILE *fp = fopen("text.txt","w");
	fputc(ch, fp);
	fclose(fp);

经过运行以后我们可以看到text中的文件是

如果此时,我们在吧ch的值变成'2',我们将会看到的就是一个字符2,而不是12

更改之后的运行结果如下:

但是如果我们是以"a"模式打开的话,我们重复以上执行步骤,将会得到的是什么呢?

 可以看到,我们得到的结果是在第一次运行结果后面追加了一个2,这就是"w"与"a"的区别了

顺序读写

 在文件操作中,我们经常使用以下函数来帮我们输入和输出

功能

函数名

适用于

字符输入函数

fgetc

所有输入流

字符输出函数

fputc

所有输出流

文本行输入函数

fgets

所有输入流

文本行输出函数

fputs

所有输出流

格式化输入函数

fscanf

所有输入流

格式化输出函数

fprintf

所有输出流

二进制输入

fread

文件

二进制输出

fwrite

文件

fgetc 与 fputc 

fgetc ()和fputc ()函数与 getchar ()和putchar ()函数类似,不同的地方是,我们需要告诉fgetc()和fputc()函数使用哪一个文件 。

事实上,getchar ()和putchar ()也是使用了文件,但是是标准文件 也就是显示屏与键盘。

在fgetc ()和fputc ()中,第一个参数是你要放入文件的字符,第二个参数是文件

例如:

	char ch = '1';
	FILE *fp = fopen("text.txt","w");
	fputc(ch, fp);
	fclose(fp);

fputc(ch, fp)的意义就是“把字符ch放入FILE指针fpout所指的文件中”

事实上 fputc()与putc ()   fgetc()与getc()有些许差别,前者是函数,而后者则是宏

这点我们以后再谈

fgetc()和fputc()只能写入和读取单个字符,如过想实现整行写入和读取的话则使用的是另一套函数

fgets()与fputs

他们的操作与fputc()和fgetc()相差不多,下面简单演示一下

	FILE *fp = fopen("text.txt","w");
	if (fp == NULL)
	{
		printf("Error");
	}
	fputs("qwertyuioo",fp);
    fclose(fp);

当我们运行以后,text里的内容就变成了

 同理fgets()也是一样

fgets()还有另一种用法

fgets(ch,number,fp);

其中 ch是char类型数组的名称,number是字符串的大小,fp是指向FILE的指针。

fgets()函数会读取输入一直到第一个换行符的前面,或者读到文件结尾,或者是读取number-1个字符。

在这里解释一些fgets()函数的用法:如以下函数

	char a[9];
	FILE *fp = fopen("text.txt","r");
	if (fp == NULL)
	{
		printf("Error");
	}
	fgets(a,8,fp);
	printf("%s",a);

在这里我提前再text中写入了17个a用来读取

fgets(a,8,fp);的意思就是在数组a中写入8-1也就是7个a

程序运行结果如下

如果fgets()在读到字符上限就读完了一整行,他就会把表示行结尾的换行符放在空字符前

当我们想使用格式化输入输出的时候,我们可以采用的是

fprintf()与fscanf()

fprintf()与fscanf()的操作与printf()和scanf()类似,但是区别是要在格式化字符串之前加入指向FILE的指针

下面简单的演示一下它们的用法

fprintf():

fscanf()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值