读取和修改txt文件(逐行)

时间:2017-06-17 05:47:44

标签: c data-structures struct structure

所以在我以前的一个课程中有一个轻型项目,用户可以阅读文本文件(我们称之为#34; studentstuff.txt",见下文)

*studentstuff.txt*

1
Bob Smith
24
3.5
2
Jill Williams
23
3.6
3
Tom Jones
32
2.4
4
Julie Jackson
21
3.1
5
Al Brown
23
3.35
6
Juan Garcia
22
3.4
-7
Melissa Davis
20
3.2
8
Jack Black
44
1.1

输出打印出:1)学生数量2)平均年龄3)平均gpa。在这个任务中,我们有一个结构:

typedef struct{
    int id;
    char name[255];
    int age;
    float gpa;
}student;

根据该计划," studentstuff.txt"将根据结构读取和排序,然后在一些小数学和函数吐出:

  • '#'学生:

  • 平均年龄:

  • 平均gpa:

问题是我脑子里有这个想法,但我似乎无法把它放入代码中。有谁可以帮我解决这个问题?

1 个答案:

答案 0 :(得分:0)

与任何编程问题一样,第一个动作(在决定输入和输出之后)是将问题分解为简单的离散步骤。

OPs问题的这一系列步骤看起来类似于:

open the input file
if any errors:
    output user message to stderr
    exit program, indicating error occurred 
else
    begin: loop:
        input the info for one student
        if any errors, except EOF:
            output user message to stderr
            cleanup by closing the input file
            exit program, indicating an error occurred
        else
            update number of students
            update total age
            update total gpa
        endif
        goto top of loop
    end loop:
endif

calculate the average age
calculate the average gpa

display number of students
display average student age
display average student gpa

cleanup by closing the input file
return to caller, indicating success

因为计算会产生分数,为避免出现问题,建议将结构定义为:

struct studentStruct
{
    float id;
    char  name[255];
    float age;
    float gpa;
};

typedef struct studentStruct student;

注意struct定义与typedef语句的分离。它在这里没有任何区别,但是在使用调试器(需要结构标记名称正确显示结构中的所有字段)以及处理大型项目以帮助避免混淆时。