C语言及程序设计初步例程-43 从文本文件中读入数据

简介: 贺老师教学链接  C语言及程序设计初步 本课讲解编程序,实现文本文件的复制#include <stdio.h>#include <stdlib.h>int main(){ FILE *fpin, *fpout; char c; if ((fpin=fopen("source.txt", "r"))==NULL) {

贺老师教学链接  C语言及程序设计初步 本课讲解


编程序,实现文本文件的复制
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fpin, *fpout;
    char c;
    if ((fpin=fopen("source.txt", "r"))==NULL)
    {
        printf("Source file cannot open!");
        exit(0);
    }
    if ((fpout=fopen("target.txt", "w"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    while((c=fgetc(fpin))!=EOF)
        fputc(c, fpout);
    printf("Finish copy!\n");
    fclose(fpin);
    fclose(fpout);
    return 0;
}

应用:大奖赛计分,将计算结果数据存入文件
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp;
    if ((fp=fopen("record.txt", "w"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    int judgeNum, singerNum, j, s;
    float mark, sum, aver, max, min;
    scanf("%d %d", &judgeNum, &singerNum);
    fprintf(fp, "No.\t");
    for(j=1;j<=judgeNum;j++)
        fprintf(fp, "%d\t", j);
    fprintf(fp, "Max\tMin\taver\n");
    s=1;
    while(s<=singerNum)
    {
        sum=0;
        max=0;
        min=10;
        j=1;
        fprintf(fp, "%d\t", s);
        do
        {
            scanf("%f",&mark);
            fprintf(fp, "%.2f\t", mark);
            sum+=mark;
            if(max<mark) max=mark;
            if(min>mark) min=mark;
            j++;
        }
        while(j<=judgeNum);
        aver = (sum-max-min)/(judgeNum-2);
        fprintf(fp, "%.2f\t%.2f\t%.2f\n", max, min, aver);
        s++;
    }
    fclose(fp);
    return 0;
}

应用:大奖赛计分,从文件中读取数据,并将结果存入文件
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp1, *fp2;
    if ((fp1=fopen("score.dat", "r"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    if ((fp2=fopen("result.csv", "w"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    int judgeNum=11, j, s;
    float mark, sum, aver, max, min;
    fprintf(fp2, "No.,Max,Min,aver\n");
    while(fscanf(fp1, "%d", &s)==1)
    {
        sum=0;
        max=0;
        min=10;
        fprintf(fp2, "%d,", s);
        printf("calculate %d ...\n", s);
        j=1;
        do
        {
            fscanf(fp1, "%f",&mark);
            sum+=mark;
            if(max<mark) max=mark;
            if(min>mark) min=mark;
            j++;
        }
        while(j<=judgeNum);
        aver = (sum-max-min)/(judgeNum-2);
        fprintf(fp2, "%.2f,%.2f,%.2f\n", max, min, aver);
    }
    fclose(fp1);
     fclose(fp2);
    return 0;
}

用下面的数据,建立文件score.dat
1 7.11 8.52 8.58 8.81 7.79 7.53 8.95 8.97 8.95 7.26 8.72
2 7.95 7.46 8.19 9.9 7.11 7.77 8.5 7.88 8.58 8.66 7.15
3 7.75 8.75 8.63 8.54 8.17 8.34 8.37 8.97 7.87 8.25 8.22
4 7.92 7.75 7.11 7.88 8.83 8.58 7.5 7.14 7.23 7.61 7.16
5 7.47 7.77 8.97 7.11 7.64 7.05 8.57 8.35 8.11 7.06 8.35
6 8.99 8.11 7.43 8.93 7.75 7.99 7.76 8.35 7.16 8.27 7.57
7 9.47 7.66 8.71 7.42 9.17 7.68 7.76 7.65 8.36 7.07 7.1
8 8.42 8.31 8.93 7.51 8.64 8.45 8.75 8.82 7.58 8.59 7.88
9 7.32 8.2 7.03 9 8.39 8.02 8 8.74 7.88 7.27 8.26
10 7.8 7.6 8.72 8.8 8.39 7.09 8.42 8.34 8.91 8.4 7.38
11 8.69 7.18 7.2 8.99 7.12 8.57 7.27 8.99 8.49 7.15 8.05
12 8.1 7.49 7.46 7.86 8.53 8.66 8.29 8.96 8.41 8.72 8.4
13 7.87 8.06 7.34 7.21 8.3 7.42 7.95 9.07 7.59 8.16 8.99
14 7.23 7.43 8.83 7.33 7.25 8.76 8.12 7.65 8.94 8.05 7.28
15 7.08 7.39 7.13 7.41 8 8.08 7.26 7.52 8.55 8.54 8.68
16 7.4 7.91 8.52 7.92 7.7 8.81 7.74 8.27 7.51 7.84 7.37
17 7.15 7.88 7.31 7.16 8.39 8.73 8.09 9.7 8.67 7.66 7.1
18 8.68 7.79 7.74 7.78 7.69 8.13 8.18 8.94 7.39 8.67 8.38
19 7.73 7.71 9.64 8.84 8.97 8.12 8.99 7.41 8.53 8.93 7.59
20 8.74 7.58 8.54 8.81 7.31 7.21 7.39 8.83 9.17 8.22 7.48
21 8.52 8.56 8.68 7.97 7.06 7.24 7.29 8.9 8.82 7.74 9.3
22 7.59 8.82 7.93 8.73 8.88 8.86 7.29 7.79 7.1 8.67 8.79
23 7.38 7.89 8.01 7.2 8.25 7.82 8.75 7.47 8.44 7.95 8.79
24 7.25 8.2 8.18 8.7 7.85 8.53 8.93 8.03 8.65 8.71 7.28
25 8.66 8.31 8.49 8.62 7.59 7.03 7.75 8.63 7.09 9.72 7.86
26 9.08 7.31 8.03 9.3 8 7.26 8.09 7.52 8.22 7.66 8.99

目录
相关文章
|
15天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
15天前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
|
15天前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
15天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
15天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
|
18天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
4天前
|
存储 编译器 C语言
C语言:字符函数 & 字符串函数 & 内存函数
C语言:字符函数 & 字符串函数 & 内存函数
11 2
|
12天前
|
缓存 安全 编译器
【C 言专栏】C 语言函数的高效编程技巧
【5月更文挑战第1天】本文探讨了C语言中函数的高效编程技巧,包括函数的定义与作用(如代码复用和提高可读性)、设计原则(单一职责和接口简洁)、参数传递方式(值传递、指针传递和引用传递)、返回值管理、调用约定、嵌套与递归调用,以及函数优化技巧和常见错误避免。掌握这些技巧能提升C语言代码的质量和效率。
【C 言专栏】C 语言函数的高效编程技巧
|
15天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)