#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void getGrades(FILE *ifp, int assigns, int stus, int grades[assigns][stus]);
void printGrades(int assigns, int stus, int grades[assigns][stus]);
int main(int argc, char *argv[])
{
int assigns = 0;
int stus = 0;
int grades[assigns][stus];
// command line arg. error checking
if (argc != 2)
{
printf("Syntax Error: ./<exec> <file>\n");
exit(1);
}
// file handle = open("infile.txt", read)
FILE *ifp = fopen(argv[1], "r");
if (ifp == NULL){
printf("Could not open %s for reading!\n", argv[1]);
exit(1);
}
fscanf(ifp, "%d%d", &assigns, &stus); // it does scan in 8 and 5 correctly
// print debugging check
// printf("assigns == %d\nstus == %d", assigns, stus);
getGrades(ifp, assigns, stus, grades);
printGrades(assigns, stus, grades);
return 0;
}
void getGrades(FILE *ifp, int assigns, int stus, int grades[assigns][stus])
{
int i = 0, j = 0;
// iterate through all of the rows & columns
for (i = 0; i < assigns; ++i){
for (j = 0; i < stus; ++j){
fscanf(ifp, "%d", &grades[i][j]);
}
}
}
void printGrades(int assigns, int stus, int grades[assigns][stus])
{
int i = 0, j = 0;
for (i = 0; i < assigns; ++i){
for (j = 0; j < stus; ++j){
printf("%10d", grades[i][j]);
}
printf("\n");
}
}
输入文件如下所示:
8. 5. 100 92 84 76 68 99 91 83 75 67 98 90 82 74 66 97 89 81 73 65 96 88 8072 64 95 87 79 71 63 94 86 78 70 62 93 85 77 69 0
我只是希望输出如下所示
100 92 84 76 68
99 91 83 75 67
98 90 82 74 66
97 89 81 73 65
96 88 80 72 64
95 87 79 71 63
94 86 78 70 62
93 85 77 69 0
我不知道我的程序不打印输出的代码中哪里出错了.
由于输入文件中的行和列可以更改,因此大小是动态的.现在,输入文件中的行是8,列是5.