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-文件操作相关例题的主要内容,如果未能解决你的问题,请参考以下文章

力扣专题2.链表

C语言之文件操作08——总结

组成原理-指令指令系统

C语言文件的相关操作

C语言 文件操作相关概念

C语言 文件操作相关概念