如何在同一文本文件中读取多行?

时间:2013-03-17 18:40:33

标签: c

此代码仅读取文本文件中的第一行。如何在同一文本文件中读取多行?谢谢。
lname fname的GPA为88.0
lname fname的GPA为90.0

#include <stdio.h>
#include <stdlib.h>
struct stud{
char fname[21];
char lname[21];
float gpa;
} str;

int getStudData(struct stud *current_ptr); // struct function format 

int main(void){
struct stud str;
getStudData(&str);

printf("Last Name: %s\n First Name: %s\n GPA: %.2f\n"
    , str.fname, str.lname, str.gpa);
return 0;
}

int getStudData(struct stud *current_ptr){

FILE *studFile; // declaring a pointer file variable

studFile = fopen("StudData.txt", "r"); // format for fopen; file-variable = fopen(file_name, mode);

if ( studFile == NULL){ 
    printf("Error: Unable to open StudData.txt file\n"); //test for error
}
else {
    fscanf(studFile, "%20s %20s has a GPA of %f\n"
        , current_ptr->fname, current_ptr->lname, &current_ptr->gpa);
    // fscanf(file, format, &parameter-1, ...) 

    fclose(studFile); // The function fclose will close the file. 
}
return 0;
}

1 个答案:

答案 0 :(得分:0)

要从输入文件中读取多行,通常会指定行尾(EOL)字符。在大多数情况下,这是换行符('\ n'),从输入文件读取设置为循环。除非有必要读取行,停止,读取行,停止和重复...您可以创建一个循环结构来逐行读取文件,直到文件结束(EOF)为止达到。

下面的代码只读取一行,然后关闭文件。

fscanf(studFile, "%20s %20s has a GPA of %f\n"
        , current_ptr->fname, current_ptr->lname, &current_ptr->gpa);
    // fscanf(file, format, &parameter-1, ...) 

    fclose(studFile); // The function fclose will close the file