C文件处理/结构问题

时间:2011-02-26 15:32:29

标签: c

如何读取包含学生姓名和标记并输入的txt文件 进入一系列结构。

maximum allowable records are 7:
e.g. James 45
Mary 70
Rob 100

3 个答案:

答案 0 :(得分:1)

首先,定义结构。该结构描述了记录的内容;它包含哪些数据。在这里你有一个学生的名字和他或她的标记。

其次,您需要准备数组以将结构的对象写入。您已从问题描述中了解到,不允许超过7名学生,因此您可以将数组的长度定义为该数字。

接下来,打开文本文件。

最后写一个循环,从文件中输入学生姓名的字符串和整数(或者如果你选择的话是浮点数)作为他们的标记。在循环中为每条记录创建一个结构,并将结构插入到数组中。

当然,不要忘记在完成后关闭文件。

这就是它的全部。如果您有任何语法或逻辑问题,请在评论中提问,我们很乐意为您提供帮助。

答案 1 :(得分:0)

阅读fopen:http://linux.die.net/man/3/fopen

的手册页

这应该会让你在某个地方开始。

此外,fread和fgets的手册页可能会有所帮助。有许多方法可以从文件中读取,您选择的路径将取决于许多因素,例如文件的结构和应用程序中所需的安全性。

答案 2 :(得分:-1)

发现此代码足够相似,可以帮助您完成所需的工作。

#include <stdio.h>
#include <string.h>

/* Sample data lines
5 0 Wednesday Sunny
6 2 Thursday Wet
*/

int main() {
/* Define a daydata structure */
        typedef struct {
                int n_adults; int n_kids;
                char day[10]; char weather[10];
                } daydata ;
        daydata record[30];
        FILE * filehandle;
        char lyne[121];

        char *item;
        int reccount = 0;
        int k;

        /* Here comes the actions! */
        /* open file */

        filehandle = fopen("newstuff.txt","r");

        /* Read file line by line */

        while (fgets(lyne,120,filehandle)) {
                printf("%s",lyne);

                item = strtok(lyne," ");
                record[reccount].n_adults = atoi(item);

                item = strtok(NULL," ");
                record[reccount].n_kids = atoi(item);

                item = strtok(NULL," ");
                strcpy(record[reccount].day,item);

                item = strtok(NULL,"\n");
                strcpy(record[reccount].weather,item);

                printf("%s\n",record[reccount].day);
                reccount++;
                }

        /* Close file */

        fclose(filehandle);

        /* Loop through and report on data */

        printf("Weather Record\n");
        for (k=0; k<reccount; k++) {
                printf("It is %s\n",record[k].weather);
                }

        }

http://www.wellho.net/resources/ex.php4?item=c209/lunches.c

如果您在更改代码时出现问题以满足您的需求,请使用您尝试过的代码。