标签:
刚才学妹问了我几个文件操作,我也不会,搜索了下,记录下来
这段程序中fgets(str, 12, fr)的意思是从fr所指的文件中读取长度为11的字符串,然后赋给str,因为最后一个是‘\0‘代表字符串结束
#include <stdio.h> int main() { FILE *fr = fopen("a.txt", "r"); char str[40], *p = str; fgets(str, 12, fr); printf("%s\n", str); p+=6; printf("%c%c%c,%s", p[0], p[2], p[4], p+1); fclose(fr); }
下面这段程序,逐个在文件中写入int类型的数据1234,然后从文件中读取两个int类型的数字并输出,但是结果是1234,0
看完之后忽然明白这种方式读取文件是以字符串的形式读取的,所以读取的第一个int类型的数据输出为1234
因为文件中只有一个数字,但是读取的时候要读取两个数字,这时候第二个数据自动附为0, 虽然我无法解释,但是这是我看到的事实
#include <stdio.h> int main() { FILE *fp; int i,k=0,n=0; fp=fopen("d1.dat","w"); for(i=1;i<=4;i++) fprintf(fp, "%d", i); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d,%d\n",k,n); fclose(fp); }
看完下面程序之后学会了了fscanf和fprintf使用
fscanf的功能是从一个流中执行格式化输入,fscanf()遇到空格或者换行符结束
但是fgets遇到空格不结束返回值为整形,含义为读入的参数的个数,失败则返回EOF(-1)
fprintf的含义是格式化输出到一个流文件中,函数根据指定的format(格式)发送信息(参数)到stream(流)指定的文件
fprintf只能和fprintf一样工作,fprintf的返回值是输出的字符数,发生错误时返回一个负值
/* 下列给定程序中,函数fun的功能是: 将自然数1~NN及其平方根写到名为myfile3.txt的文本文件中, 然后再顺序读出显示在屏幕上。请修正提示位置的语句后,运行通过。 */ #include<math.h> #include<stdio.h> int NN; float sum=0; int fun(char* fname) { FILE *fp; int i,n; float x; scanf("%d",&NN); if((fp=fopen(fname, "wt+"))==NULL) return 0; for(i=1;i<= NN;i++) fprintf(fp, "%d %f\n", i, sqrt(i)); fclose(fp); if((fp=fopen(fname, "r+"))== NULL) return 0; fscanf(fp,"%d%f",&n,&x); while(!feof(fp)) { sum+=x; fscanf(fp,"%d%f", &n, &x); } printf("sum=%f\n",sum); fclose(fp); return 1; } int main() { char fname[]="myfile3.txt"; fun(fname); }
标签:
原文地址:http://www.cnblogs.com/rain-1/p/5046503.html