1 文件的概念
printf 打印=输出 内存------------>显示器=stdout-------文件(文件指针)
scanf 录入=输入 内存<------------ 键盘=stdin-------文件(文件指针)
fflush
1.1 将内存中的数据 输出到 磁盘文件
代码:
int main()
{
int a=10;
FILE *fp=fopen("a.txt","w");
//printf("%d",a);
fprintf(fp,"%d\n",a); //fp若换位stdout则,输出到显示器文件
return 0;
}
1.2 将磁盘文件中的内容,输入到内存中
int main()
{
int a;
FILE *fp=fopen("a.txt","r");
//scanf("%d",&a); //a是输出参数。参数的地址传递方式
//fscanf(stdin,"%d",&a);
fscanf(fp,"%d",&a);
printf("a=%d\n",a);
return 0;
}
1.3 其它问题
fopen()
需要查看返回值,如打开1个不存在的a.txt时,会返回null,而不是1个可用的FILE *类型的值
fclose(fp);
参数的区别:
w---写,会新建,会将已有文件清空;不能读
r---读,但不能写。必须已有a.txt文件名,否则返回错误。
w+ 只是额外增加功能
r+ 同样
文件fopen后,游标默认在第1个字符上(位置从0开始)。(空文件除外)-------空文件时,游标在0位置(可以利用来判断是否为空文件)
ftell------查询游标的当前位置(重要前提:使用该函数时,前面必须要移动1次游标。如前面加fseek(fp,0,SEEK_END); 如果ftell返回0,则说明文件内容为空)
fseek------让游标发生移动(有3个起点)
移动游标的方法:
fseek
fscanf(fp,"%d %s %c %s %s ",&intdat,str1,&char1,str2,str3);------前提是a.txt中,各个数据间也有空格
fprintf--------也要用相同的间隔符来 输出的a.txt
rewind(fp)------fseek(fp,0,SEEK_SET)移动文件的第1个字符上
fflush(stdin)-----当标准输入设备中有字符时,将它们清楚掉(如有'\n')
怎样保证数据已被写到了a.txt中?
fclose(fp);
fp不要重复打开
feof(fp)------读文件时,用于判断是否读到文件末尾了。如果到末尾了,返回真