使用fscanf读取txt文件矩阵时输出异常的C语言问题
C读取TXT文件矩阵输出异常问题
问题背景
需要读取的TXT文件格式如下:
10 5 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
其中:
- 10是矩阵列数(对应代码中
dim.x) - 5是矩阵行数(对应代码中
dim.y) - 1是矩阵中数字"2"的数量(当前无需关注)
读取代码
// CoupleInt仅包含两个int类型变量x和y CoupleInt dim; int nbrCible; FILE* fichier = fopen("sample.txt", "r"); int items_lus = fscanf(fichier, "%d %d %d", &dim.x, &dim.y, &nbrCible); // 中间包含前置条件判断... int map[dim.x][dim.y]; int compteurCible = 0; for(int y=0; y<dim.y; y++){ for(int x=0; x<dim.x; x++){ if(fscanf(fichier, "%d ", &map[y][x])!=1){ printf("Stop"); return 1; }; if (map[y][x] == 2){ compteurCible++; } } } for(int y=0; y<dim.y; y++){ for(int x=0; x<dim.x; x++){ printf("%d ", map[y][x]); } printf("\n"); } fclose(fichier);
异常现象
前3个数字已正确读取到对应变量中,但矩阵输出结果异常:
1 2 3 4 5 11 12 13 14 15 11 12 13 14 15 21 22 23 24 25 21 22 23 24 25 31 32 33 34 35 31 32 33 34 35 41 42 43 44 45 41 42 43 44 45 46 47 48 49 50
环境为Windows系统,使用MinGW32编译代码。
尝试用以下简单代码读取并打印,能正常输出所有数字:
while(fscanf(fichier, "%d", &test)==1){printf("%d",test);}
输出结果:
1 2 3 4 5 6 7 8 ...
寻求解决矩阵输出异常的方法。
内容的提问来源于stack exchange,提问作者yassine_deux_s
相关产品推荐
相关产品推荐

