字符的输入输出(文件操作)

1,fgetc()的返回值是一个字符。在执行该函数读取字符遇到文件结束符,则返回文件结束标志EOF,EOF是定义在头文件stdio.h中,值为-1;EOF不是可输出的字符,不能够显示;只可以顺序的读取文件内容。
2,fputc()一般的调用形式为fputc(ch,fp);ch是要写入的字符,fp是文件的指针;如果写入成功,返回值就为该字符,否则返回值就是EOF;

(1)打开一个文件:

#include<stdio.h>
int main()
{
	FILE *fp;
	fp=fopen("hello.txt","w");//不加文件的路径,则文件在当前工程的目录下
	/*"w"以写的方式打开文件,当不存在这个文件的时候,则新建一个文件。
	  如果以"r"方式打开文件,则表示,该文件应该已经存在,不能使用它打开一个并不存在的文件。*/
	if(fp==NULL)
	{
		printf("打开文件失败!");
//		exit(0);
	}
	fclose(fp);
	return 0;
}

PS:exit(1)表示发生错误后退出程序,   exit(0)表示正常退出。


(2)打开一个文件并且在屏幕上显示:

#include<stdio.h>

int main()
{
	FILE *fp;
	fp=fopen("hello.txt","rb+");
	if(fp==NULL)
	{
		printf("打开文件失败!\n");
	}
	//将磁盘文件读出,并在屏幕上显示
	char ch=fgetc(fp);
	while(ch!=EOF)		//while(!feof(fp)) 判断是否到达文件尾部
	{					//{
		putchar(ch);		//ch=fgetc(fp);  先读出一个字符再进入循环,读一次文件指针后移一个字符,结束时指向EOF。
		ch=fgetc(fp);		//putchar(ch);
	}					//}
	fclose(fp);
	return 0;
}
在文本文件中输入:
运行结果:
可以看到,文本中的内容在控制台上得到了显示。

(3)在控制台输入数据,保存到文件中:
#include<stdio.h>
int main()
{
	FILE *fp;
	char ch,ch1;
	fp=fopen("world.txt","w");
	if(fp==NULL)
		return 0;
	printf("输入文件内容:\n");
	while((ch=getchar())!='#')
	{
		fputc(ch,fp);//向文件中写入一个字符
	}
	fclose(fp);
	//将文件内容输出到屏幕
	FILE *fp1;
	fp1=fopen("world.txt","r");//只读方式打开
	if(fp1==NULL)
		return 0;
	printf("打印输出\n");
	ch1=fgetc(fp1);
	while(ch1!=EOF)
	{
		putchar(ch1);
		ch1=fgetc(fp1);
	}
	fclose(fp1);
	return 0;
}
输入以下的内容:
打开world.txt,文本显示了文件内容:

(4)将一个文件中的内容复制到拧一个文件中:
#include<stdio.h>

int main()
{
	FILE *in,*out;
	char ch,infile[25],outfile[25];
	printf("输入要被拷贝的文件名\n");
	scanf("%s",infile);
	printf("输入要拷贝的文件名\n");
	scanf("%s",outfile);
	in=fopen(infile,"r");
	if(infile==NULL)
		return 0;
	out=fopen(outfile,"w");
	if(outfile==NULL)
		return 0;
	while(!feof(in))
	{
		ch=fgetc(in);//读出
		fputc(ch,out);//写入
	}
	fclose(in);
	fclose(out);
	return 0;
}
打开两个文本文档,发现两个文本的内容是不一样的:
在控制台按照相应的指示输入:
再次打开两个文本,原来的world.txt文件中的内容被清空,hello.txt文件中的内容被复制到了world.txt中。



发布了74 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/fu_yunjian/article/details/52782786
今日推荐