Таблица изменения данных при отправке их функции в C - PullRequest
0 голосов
/ 02 мая 2019

Итак, сначала я написал все свои функции в своей основной.Но это занимает слишком много места, поэтому я попытался сделать заголовочные файлы и исходные файлы моего кода.

Но проблема возникает, когда я отправляю таблицу [x] [y] из основного файла в функциюв другом файле данные таблицы аналогично конвертируются, и они изменяют значения таблицы, делая ее непригодной для использования.

Я изначально собираю символы из чисел, например: «0» или «1'или' 2 '... И когда я печатаю значения с printf("%c", level[x][y]); в двух функциях, основной и одной из другого файла, он сначала работает в основном, и он не работает должным образом во второй функции,Он печатает пробелы или другие символы полностью изменены.

Я пробовал также с 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");
    }
}

Iожидайте что-то вроде этого (работает в основном):

000000000000000
000000000100000
000000000000000

Но я получаю нечто подобное (во второй функции из другого файла):


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

1 Ответ

0 голосов
/ 02 мая 2019

Хорошо, так что код, который я разместил в Вопросе, на самом деле работает, на самом деле я работал над другим кодом с большим контекстом, и контекст вмешивался в код, который я показал.Мне наконец удалось заставить это работать, спасибо за ответы.Вот то, над чем я работаю, это воспроизведение Mario с использованием SDL 2, поэтому я назвал мой уровень таблицы, это сохранение уровня. Скриншот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...