Reputation: 51
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
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