Tuan
Tuan

Reputation: 51

Use loops to read all text files in C

I know that we have so many different ways to implement a function. anyone has ideas to use loop case to read all text files at once?

int readTenFiles(char (*names)[MAX_LENGTH_NAME], int (*ranks)[YEAR], int namesCount) {
    int yearIndex = 0;
    namesCount = readOneFile(fopen("yob1920.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob1930.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob1940.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob1950.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob1960.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob1970.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob1980.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob1990.txt", "r"), names, ranks, yearIndex++, namesCount);
    namesCount = readOneFile(fopen("yob2000.txt", "r"), names, ranks, yearIndex++, namesCount);
    return readOneFile(fopen("yob2010.txt", "r"), names, ranks, yearIndex++, namesCount);
}

Upvotes: 1

Views: 83

Answers (1)

tivn
tivn

Reputation: 1923

Assign filename list in an array, and then loop on this array.

char *filenames[] = { 
    "yob1920.txt" ,
    "yob1930.txt" ,
    "yob1940.txt" ,
    "yob1950.txt" ,
    "yob1960.txt" ,
    "yob1970.txt" ,
    "yob1980.txt" ,
    "yob1990.txt" ,
    "yob2000.txt" ,
    "yob2010.txt" ,
};
int i = 0;
for ( i=0; i<sizeof(filenames)/sizeof(*filenames); i++ ) { 
    namesCount = readOneFile(fopen(filenames[i], "r"), names, ranks, yearIndex++, namesCount);
}

Upvotes: 2

Related Questions