字符输入输出函数fgetc,fputc,他们能够完成一个字符在磁盘文件中的读出与写入。
int fputc(int ch,FILE*steam);
int fgetc(FILE*steam);
上述两个函数的返回值均为整型。fputc函数返回一个向文件所写字符的值,此时写操作成功,否则返回EOF(文件结束符,其值为-1,在stdio.h中定义)表示操作些错误。fgetc函数返回文件当前位置的一个字符的ASCII值,在读操作遇到文件结束符时,函数返回一个文件结束标志EOF
这里写代码片
# include<stdio.h>
#define CTRLS 19 /*组合键CTRL+s的值为19*/
int main()
{
FILE*fp;
char ch;
//if((fp=fopen("E:\计算机软件\awe.txt","r"))==NULL)——错误的路径格式
if((fp=fopen("E:\\计算机软件\\awe.txt","w"))==NULL)//以只写打开文件,注意文件路径的书写格式
{
printf("Cannot open this file\n");
return 0;
}
while(1)
{
// clrscr();
system("cls");//记得清屏,否则会出错
ch=getchar();
if(ch==CTRLS)//判断输入的字符是否为Ctrl+c键
{
if(fclose(fp))printf("File close error!\n");//关闭文件
exit(0);
}
putchar(ch);
if(fputc(ch,fp)==-1)
{
printf("File write error!\n");
exit(0);
}
}
}
在运行程序之前,文件内容为空,如下图:
程序运行时,输入asd qwe与Crtl+c键后退出
记事本显示如下内容:
特别注意:
1.每次运行程序写入数据时,上一次的文件内容都会清空。
而如果用 if((fp=fopen(“E:\计算机软件\awe.txt”,”a”))==NULL)将w改为a,则是在尾部接着写入数据。
2.注意代码中的system(“cls”);很重要,省略之后可能会出错。
3.在程序运行窗口下进行输入,先输入Ctrl+s键然后再按回车键才可以结束。
4.解释一下为什么组合键的值是19
ctrl+?,其中?代表字母,字母的顺序是多少,值就是多少,比如c的话就是3,s的话就是19(这一点可能不正确,有待深入考究)