C-文件操作相关例题
Posted khrushchefox
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C-文件操作相关例题相关的知识,希望对你有一定的参考价值。
文件操作相关例题
1
从文件"coordinate.txt"中读取X, Y数据(共10组), 计算Z = X + Y, 并将结果写入"result.txt"中.
x y
100.671 100.888
98.793 98.853
100.717 98.931
101.630 99.191
100.489 97.056
101.035 101.438
100.727 100.325
99.697 99.245
100.294 101.370
99.213 98.288
#include <stdio.h>
int main()
char header1, header2, header3 = \'z\';
float x[10], y[10], z[10];
FILE *fp = fopen("coordinate.txt", "r");
if(fp == NULL)
printf("ERROR");
else
fscanf(fp, "%c %c", &header1, &header2);
for (int i = 0; i < 10; ++i)
fscanf(fp, "%f %f", &x[i], &y[i]);
z[i] = x[i] + y[i];
fclose(fp);
FILE *fp2 = fopen("result.txt", "w");
if(fp2 == NULL)
printf("ERROR");
else
fprintf(fp2, "%c %c %c\\n", header1, header2, header3);
for (int i = 0; i < 10; ++i)
fprintf(fp2, "%f %f %f\\n", x[i], y[i], z[i]);
fclose(fp2);
return 0;
2
将一个主对角线上元素从1增加到5, 其余元素为0的矩阵写入到文件"matrix.txt"中.
#include <stdio.h>
int main()
FILE *fp = fopen("matrix.txt", "w");
int value = 1;
if(fp == NULL)
printf("ERROR");
else
for (int i = 1; i < 6; ++i)
for (int j = 1; j < 6; ++j)
if(i == j)
fputc(value+48, fp);
else
fputc(\'0\', fp);
value++;
fputc(\'\\n\', fp);
fclose(fp);
return 0;
3
下面是一个几何数据文件的实例 (geodata.txt), 包含线 (LINE), 矩形 (RECT) 和圆 (CIRCLE) 三种图形.
LINE #线
0 0 10 10 #x1 y1 x2 y2
RECT #矩形
10 10 20 20 #x1 y1 width height
CIRCLE #圆
20 20 40 #x1 y1 r
END #文件中无注释
- 根据不同的几何数据类型定义不同的数据结构, 存储这些数据
- 计算线的长度, 矩形和圆的面积
- 把数据和结果写入"newdata.txt"文件中
#include <stdio.h>
#include <math.h>
#include <string.h>
typedef struct
int x, y;
POINT;
typedef struct
POINT p1, p2;
float length;
LINE;
typedef struct
POINT p;
int width, height;
float area;
RECT;
typedef struct
POINT p;
int r;
float area;
CIRCLE;
int judge(char *str)
char *c1 = "LINE";
char *c2 = "RECT";
char *c3 = "CIRCLE";
if(!strcmp(c1, str))
return 1;
if(!strcmp(c2, str))
return 2;
if(!strcmp(c3, str))
return 3;
int main()
LINE line;
RECT rect;
CIRCLE circle;
char *header = NULL;
FILE *fp = fopen("geodata.txt", "r");
if(fp == NULL)
printf("ERROR");
else
fscanf(fp, "%s", header);
while(strcmp(header, "END") != 0)
int k = judge(header);
switch(k)
case 1:
fscanf(fp, "%d %d %d %d", &line.p1.x, &line.p1.y, &line.p2.x, &line.p2.y);
line.length = (float)sqrt((line.p1.x-line.p2.x)*(line.p1.x-line.p2.x)+(line.p1.y-line.p2.y)*(line.p1.y-line.p2.y));
break;
case 2:
fscanf(fp, "%d %d %d %d", &rect.p.x, &rect.p.y, &rect.width, &rect.height);
rect.area = (float)(rect.width * rect.height);
break;
case 3:
fscanf(fp, "%d %d %d", &circle.p.x, &circle.p.y, &circle.r);
circle.area = M_PI * pow(circle.r, 2);
break;
fscanf(fp, "%s", header);
fclose(fp);
fp = fopen("newdata.txt", "w");
if(fp == NULL)
printf("ERROR");
else
fprintf(fp, "%s\\n%d %d %d %d %f\\n", "LINE", line.p1.x, line.p1.y, line.p2.x, line.p2.y, line.length);
fprintf(fp, "%s\\n%d %d %d %d %f\\n", "RECT", rect.p.x, rect.p.y, rect.width, rect.height, rect.area);
fprintf(fp, "%s\\n%d %d %d %f\\n", "CIRCLE", circle.p.x, circle.p.y, circle.r, circle.area);
fclose(fp);
return 0;
C语言之文件操作08——总结
C程序的文件操作共涵盖7个例题,包括格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容。
文件操作使得程序有更强的拓展性,使其能够单独保存数据。这为程序的调试和优化打下了坚实的基础,为我们实现大规模计算提供了可能。至此,相信大家对文件操作也有了比較好的认识,无非是写入、读取、调用。
我们经常会听说C的强大。也是由于她有着文件操作的功能,而文件数据是能够方便重写和维护的。
MATLAB数学软件是一款十分强大的工具型软件,它是通过C语言来表达算法的。作为面向过程的编程语言C,它的直观性让我们和算法0距离,有了C 的基础,学习MATLAB就非常easy了。
接下来作者会研究一些交通领域里面的经典算法。尽可能用C或者MATLAB进行程序化。希望大家可以共同进步。
不积跬步无以至千里。共勉!
二〇一五年八月十八日 晚
附:
以上是关于C-文件操作相关例题的主要内容,如果未能解决你的问题,请参考以下文章