c - fscanf 计数 "invisible"个空格

标签 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 文件中没有空间。它完全搞砸了一切,因为我无法在矩阵中的指定位置签署数字。有谁知道出了什么问题,因为不幸的是我找不到它。

最佳答案

从“fgets”开始 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)

关于c - fscanf 计数 "invisible"个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032865/

相关文章:

c++ - 为什么 Strassen 矩阵乘法比标准矩阵乘法慢得多?

c - 如何修改 ListView 子项中单个字符的字体颜色?

c - C语言中如何从逗号分隔的字符串中获取子字符串

java - 如何确定黑莓手机上按下的是哪个键

Linux终端输入: reading user input from terminal truncating lines at 4095 character limit

algorithm - 迭代对称矩阵(或 n 维数组)的时间复杂度

r - 使用循环的矩阵乘法

c - 如何在c中使用数组存储字符串?

c - unix goto命令源代码

jquery - 如何防止 jquery Ajax 调用滚动带有输入到浏览器窗口顶部的表单