磁盘文件的读写问题:
了解fputc(字符,文本路劲的指针)基本格式:将字符写到磁盘文件中
了解fgetc(文本路劲的指针)基本格式,从磁盘文件中读取字符;
了解exit()函数,它包含在stdlib.h的头文件中。
exit是一个库函数,exit()使程序立即正常终止,如果状态值为0则认为正常推出,如果非零则说明存在执行错误。调用exit()清除和关闭所有打开的文件,写出任何缓冲输出,并且调用所有atexit()登记的程序终止函数。
一:将终端输入的数据写到任意指定的文件中:
这里要注意一下就是代码中第一个getchar()是用来“吸收”由scanf()函数作用下缓存区中的空格“enter”。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char ch, filename[20];
scanf("%s",filename);
if((fp = fopen(filename,"w"))==NULL) //文件如果打开失败就会返回NULL指针
{
printf("文件打开失败\n");
exit(0);
}
ch = getchar();//第一个getchar()是用来吸收scanf()函数中作用下缓存区的空格
ch = getchar();//正真的读取字符
while(ch != '#')//如果读取到的字符是“#”,则停止写入
{
fputc(ch,fp);
ch = getchar();
}
fclose(fp);//关闭文件
return 0;
}
终端创建文本文件,并向文本中写入内容,以#结束:
成功创建磁盘文件,并成功写入内容:
————————————————————————————————————————————————————————
二:将磁盘文件中的数据内容读取出来,在终端显示:
另外,要注意在终端乱码问题:
原因:主要是在Windows简体中文下面,你的源代码保存是GBK形式,二进制文件也是,然后读入外部utf-8的时候文件的时候,也就时读取utf-8编码的数据,程序才不管什么编码,直接读入,然后后面进行操作的时候(也就时显示),直接将utf-8编码的数据交给控制台,控制台也是以GBK进行解码,如此编码和解码不一致肯定乱码**
解决办法:将编码格式utf-8改成ANSI就可以了。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char ch;
if((fp = fopen("D:\\y.txt", "r"))==NULL)
{
printf("文件不存在\n");
exit(0);
}
ch = fgetc(fp);
while(ch !=EOF)//这里表示,如果读取完了文本中的内容,就停止读取,用大写EOF表示
{
putchar(ch);
ch = fgetc(fp);
}
fclose(fp);//关闭文件
return 0;
}
在预先创建的文本中写入数据:
将文本中的数据成功的读取出来,并且显示在终端: