fscanf count" invisible"空间

时间:2013-02-22 20:44:16

标签: c input matrix scanf

我目前正致力于从.txt文件中获取信息并需要将其存储在矩阵中的程序。当我只是打印文件时,我使用下面几行代码:

void read_maze(struct maze *mazePointer) {

FILE *fp;
fp = fopen("map1.txt", "r");

    int counter = 0;
    int column = 0;
    char mazeContent[99999];

    if(fp != NULL) {

        while (fscanf(fp, "%c", &mazeContent[counter]) == 1){

            int row = counter % 10;
            printf("%c", mazeContent[counter]);

            counter++;

            if (row == 9) {
                column ++;
            }               
        } 

        fclose(fp);
    }
}

请注意,我尚未使用“行”和“列”变量,这仅仅是为了下一个示例!从这行代码中我得到以下输出:

##########
#    #   #
# ##   #S#
# ########
#       E#
##########

它看起来很好但是只要我将列和行变量添加到它们中,我需要将它们存储在矩阵中,这就是为什么我需要将列和行正确拟合,我得到以下输出。

#(0,0)#(0,1)#(0,2)#(0,3)#(0,4)#(0,5)#(0,6)#(0,7)#(0,8)#(0,9)
(1,0)#(1,1) (1,2) (1,3) (1,4) (1,5)#(1,6) (1,7) (1,8) (1,9)#(2,0)
(2,1)#(2,2) (2,3)#(2,4)#(2,5) (2,6) (2,7) (2,8)#(2,9)S(3,0)#(3,1)
(3,2)#(3,3) (3,4)#(3,5)#(3,6)#(3,7)#(3,8)#(3,9)#(4,0)#(4,1)#(4,2)
(4,3)#(4,4) (4,5) (4,6) (4,7) (4,8) (4,9) (5,0) (5,1)E(5,2)#(5,3)
(5,4)#(5,5)#(5,6)#(5,7)#(5,8)#(5,9)#(6,0)#(6,1)#(6,2)#(6,3)#(6,4)

这不一样。当你注意到我的函数计算了第2行开头的空间和其余部分,而我的.txt文件中没有空格。由于我无法在矩阵中的指定位置对数字进行签名,因此它完全搞砸了所有内容。有谁知道出了什么问题,因为很遗憾我找不到它。

1 个答案:

答案 0 :(得分:0)

从“fgets”开始while while循环就行了!

    if(fp != NULL) {
            while (fgets(line, 12, fp) != NULL){

                for(int indexChar = 0; indexChar < 10; indexChar ++) {
                    printf("%c(%i)", line[indexChar], indexChar);
                }
                printf("\n");           
            } 
            fclose(fp);
    }

输出:

#(0)#(1)#(2)#(3)#(4)#(5)#(6)#(7)#(8)#(9)
#(0) (1) (2) (3) (4)#(5) (6) (7) (8)#(9)
#(0) (1)#(2)#(3) (4) (5) (6)#(7)S(8)#(9)
#(0) (1)#(2)#(3)#(4)#(5)#(6)#(7)#(8)#(9)
#(0) (1) (2) (3) (4) (5) (6) (7)E(8)#(9)
#(0)#(1)#(2)#(3)#(4)#(5)#(6)#(7)#(8)#(9)