c - 将数据发送到 C 中的函数时数据表的更改

标签 c function

所以我一开始确实在 main.c 中编写了所有函数。 但它占用了太多空间,所以我尝试为我的代码制作头文件和源文件。

但是问题来了,当我将表[x][y]从主文件发送到其他文件中的函数时,表的数据就像转换一样,它改变了表的值,使得无法使用。

我最初存储数字字符,如下所示:“0”或“1”或“2”... 当我在两个函数(主函数和另一个文件中的函数)中使用 printf("%c", level[x][y]); 打印值时,它首先在main 并且它在第二个函数中无法正常工作。 它打印完全改变的空格或其他字符。

我也尝试过 printf("%d", level[x][y]); 但效果不佳。结果不同,在第一个函数中它显示了字符“代码”,在第二个函数中它显示了内存地址,但我不确定。

读取的原始文件是这样的(但是有100行和100列):

000000000000000
000000000100000
000000000000000
#include <stdio.h>
#include <stdlib.h>
#define tx 100
#define ty 100
#include "function.h"

void fill_level(char *file, int level[tx][ty]){
    FILE *fichier=NULL;
    fichier = fopen(file, "r");
    int x, y;
    char buff = '0';
    if(fichier == NULL) printf("Erreur de lecture du fichier de niveau");
    else {
    for(y = 0;y < ty; y++){
        for(x = 0;x < tx; x++) {
            buff = fgetc(fichier);
            level[x][ty-y] = buff;
        }
    }
    }
    fclose(fichier);
}

int main() {

int level_1[tx][ty]={{0}};
fill_level("Level 1.txt", level_1);

int i, j;
    for(i = 0;i < ty;i++){
        for(j = 0;j < tx;j++){
            printf("%c", level_1[j][i]);
        }
        printf("\n");
    }

//then I call the function from the second file

summon_entity_level(level_1);

}

第二个函数参数是:

void summon_entity_level(int levelEnt[tx][ty]);

第二个函数是:


#define tx 100
#define ty 100

void summon_entity_level( int levelEnt[tx][ty]){

    int i, j;
    for(i = 0;i < ty;i++){
        for(j = 0;j < tx;j++){
            printf("%c", levelEnt[j][i]);
        }
        printf("\n");
    }
}

我期望像这样的东西(主要工作):

000000000000000
000000000100000
000000000000000

但是我得到了这样的东西(在另一个文件的第二个函数中):


`dyüm  áP░ ┴ C ð   0î
CIIC   ,aß@H I          

最佳答案

好吧,我在问题中发布的代码实际上正在工作,实际上我正在编写具有更多上下文的其他代码,并且上下文干扰了我展示的代码。我终于成功了,感谢您的回答。 这是我正在做的事情,它是使用 SDL 2 的 Mario 复制品,这就是我将我的表称为关卡的原因,它是为了存储关卡。 screenshot

关于c - 将数据发送到 C 中的函数时数据表的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55951164/

相关文章:

c - 从主文件调用函数

python - 如何使用相同的参数正确调用多个函数?

c - "useless type qualifier"错误

部分代码的CPU运行时间

c++ - 将 argv[ ] 的输入转换为 char?

r - 在函数内访问函数中的变量

JavaScript 检查给定数字中哪一个与其他数字不同

c - 为什么我无法将此数组传递给函数并对其进行编辑?

c - C中的编码指令

mysql - 添加由分隔符分隔的非 1NF 格式的值的函数/过程