您的位置:首页 > 编程语言 > C语言/C++

C语言文件读写练习:从键盘读入若干字符,并逐个将这些字符写入文件中,直至输入"#"结束。再将这些字符从文件中读出并显示到屏幕上。

2017-10-03 20:58 826 查看
#include<stdio.h>
#include<stdlib.h>
void main()
{
//要求:从键盘读入若干字符,并将这些字符写入文件,直至遇到"#"结束。并从文件中读出显示。

char ch = NULL;//存放用户输入的字符
char fileName[10];//存放用户输入的文件的文件名
FILE* fp = NULL;//指向用户写入字符的文件

//文件准备
printf("请输入要写入的文件名(包括后缀):");
scanf("%s",&fileName);
fp = fopen(fileName,"w");//以可写的方式打开文件,无则创建
if(!fp)//如果文件打开失败fp的值会是NULL,而在C语言中自带 #define NULL 0 即表示:NULL的值为0
{
printf("文件打开失败! ");
exit(0);
}

//first 将字符从键盘逐个读入,同时写入文件
printf("请输入字符,以“#”表示结束输入!\n ");

scanf("%c",&ch);//存放用户输入的第一个字符,以便实现循环条件的初次判断
while(ch!='#')
{
fputc(ch,fp);//写入用户输入的一个字符
scanf("%c",&ch);//用户再次输入一个字符
}

//do{
//	scanf("%c",&ch);//用户输入一个字符,存放在ch中
//	fputc(ch,fp);//同时将用户输入的字符写入文件fp中  即输入一个字符就立即将该字符写入文件
//}while(ch != '#');//直至遇到"#"结束 (弊端:# 会写入文件)

fclose(fp);//写入后随即关闭文件,以便数据从缓冲区立即写入文件中  这一句是必要的,若无会使得后续从文件中读取数据读到的是空

//second 将字符从文件逐个读出显示
fp = fopen(fileName,"r");//以可读的方式 打开文件
if(!fp)
{
printf("文件打开失败! ");
exit(0);
}
if( ( ch = fgetc(fp) ) != EOF)//首先判断文件中是否有字符
{//EOF为EOF是end of file的缩写,表示文件读完了,文件位置指针指向了结尾 注意,这里的EOF是不需要引号引起来的
while(ch != EOF)
{
printf("%c",ch);//读出一个字符并显示该字符
ch = fgetc(fp);
}
}
else
{
printf("文件为空!");
}
fclose(fp);//关闭文件
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐