使用sscanf
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]) {
int numbers[9][9];
FILE *file = fopen(argv[1], "r");
char * line = NULL;
size_t len = 0;
ssize_t read;
int rows = 0;
while ((read = getline(&line, &len, file)) != -1){
int *a = numbers[rows];
if(9 != sscanf(line, "%d%d%d%d%d%d%d%d%d", a, a+1, a+2,a+3,a+4,a+5,a+6,a+7,a+8)){
fprintf(stderr, "%s invalid format at input file\n", line);
return EXIT_FAILURE;
}
if(++rows == 9)
break;
}
fclose(file);
free(line);
//check print
for(int r = 0; r < 9; ++r){
for(int c = 0; c < 9; ++c)
printf("%d ", numbers[r][c]);
puts("");
}
}
样品输入总是9x9的数? – BLUEPIXY
@BLUEPIXY是的,永远。它是一个9x9。 –
在这种情况下,使用[sscanf]似乎很容易(http://en.cppreference.com/w/c/io/fscanf)。 – BLUEPIXY