You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:13:12