我正在尝试获取下面的输入,并将其存储在多维数组中,并将最后一个数字存储在变量中。
每行之后,将给出'\ n'字符。
它将是字符数组。
尺寸为[10] [10]。
输入:
1112231113
2112231113
1112231113
3312231113
1112231113
1112231113
3312231113
3312231113
3312231113
3312231113
1
我的代码:
int main(void) {
char array[10][10];
char in;
scanf("%c", &in);
while(in != '\n') {
for(int i = 0; i < 10;i++){
for(int j = 0;j < 10;j++){
array[i][j] = in;
}
}
scanf("%c", &in);
}
for(int i = 0; i < 10;i++){
for(int j = 0;j < 10;j++){
printf("%c", array[i][j]);
}
printf("\n");
}
return 0;
}
在这种情况下,您应该使用Dimension is [10][12]
代替Dimension is [10][10]
,因为每行包含10位数字,因此,如果要将数字存储在字符串行中,则应该为null
字符花费1个字节的内存(\0
)和\n
字符的一个字节。
对于最后一个值,您可以使用sscanf
,fscanf
或atoi
等。>
适合您的小例子:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char data[10][12]; char line[12]; FILE *fp = fopen("input.txt", "r"); int i = 0; int var; while (fgets(line, sizeof(line), fp)) { if(strlen(line) > 1) { strcpy(data[i], line); } else if(strlen(line) == 2) { // for the value from `0` to `9`. var = atoi(line); } i++; } printf("var = %d\n", var); for(int k = 0; k < 10; k++) { printf("%s", data[k]); } return 0; }
如果您确切知道文件中的行数,也可以使用
for
循环。
for(int i = 0; i < 10; i++) {
fgets(data[i], 12, fp);
}