Skocz do zawartości

Wczytywanie Tablicy 2 Wymiarowej Z Pliku. Ratunku


glodmaster

Rekomendowane odpowiedzi

mam tablice 2 wymiarową intow (beda warcaby) przechowuje w niej ustawienie pionkow w warcabach. chcial bym zapisac ja do pliku i wczytac. Przeszperalem caly internet i nic mi nie chodzi.

tablica jest zadeklarowana jako t[v][v];

kod ktorym probuje to zrobic :

 

odczytywanie w zaleznosci od tego czy uzytkownik ma na to ochote.

if (odc==1){

v=8;

rozmiar=9;

 

FILE *input=fopen("wyjscie.txt", "r");

rewind(input);

for (i=0;i<rozmiar;i++){

for (a=0;a<rozmiar;a++){ fscanf(input,"%1d",&t[a]);

}}

fclose(input);

 

 

 

}

 

 

 

/*zapisywanie tablicy*/

 

 

FILE *input=fopen("wyjscie.txt", "w");

for (i=0;i<rozmiar;i++){

for (a=0;a<rozmiar;a++){ fprintf(input,"%d",t[a]);

 

 

}}

fclose(input);

Odnośnik do komentarza
Udostępnij na innych stronach

/** main.c -- pozycja pionków na szachownicy
* gcc -o test main.c -std=gnu99
* ./test
*/

#include <stdio.h>
#include <stdlib.h>
#define N 2 //rozmiar szachownicy

int t[N][N]={
        0,1,
        2,3
        }; //ustawienie początkowe

void odczyt()
{
    FILE *input=fopen("state.dat", "r");
    for (int i=0;i<N;i++){
        for (int a=0;a<N;a++){
            fscanf(input,"%d",&t[i][a]);
        }
    }
    rewind(input);
    fclose(input);
}
void drukuj(){
    for (int i=0;i<N;i++){
        for (int a=0;a<N;a++){
            printf("%d\t",t[i][a]);
        }
        printf("\n");
    }

}
void zapis()
{
    FILE *input=fopen("state.dat", "w");
    for (int i=0;i<N;i++){
        for (int a=0;a<N;a++){
            fprintf(input,"%d ",t[i][a]);
        }
        fprintf(input,"\n");
    }
    fclose(input);
}

int main(void)
{
    printf("Ustawienia początkowe:\n");
    drukuj();
    printf("Zapisuje i odczyt pliku:\n");
    zapis();
    odczyt();
    drukuj();

    printf("TEST: zmiany w tablicy:\n");
    t[0][1]=13;
    drukuj();
    printf("Zapisuje i odczyt pliku:\n");
    zapis();
    odczyt();
    drukuj();

    return 0;
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

z sejwem i odczytem jest ok. Mam jednak blad przy wpisywaniu wartosci do tablicy, poniewaz nadpisuje je i nie wiem jak sie zabezpieczyc, zeby w momencie kiedy konczy sie tablica nie wpisywal ich dalej i nie dodawal bugow.

 

int rza;

i

 

 

for (i=0;i+i<rozmiar;i++)

{

 

 

for (rza=0;rza<rzad;rza++){ // rzad to ilosc rzedow pionkow definiowana przez gracza

 

if (rza%2==0){

 

t[rza][2*i]=1;}

else {

t[rza][2*i+1]=1;}

 

 

if (rozmiar%2==0){

 

 

 

 

 

if (rza%2==0){

t[rozmiar-1-rza][2*i+1]=2;}

 

else {t[rozmiar-1-rza][2*i]=2;}

 

}

else {

 

if (rza%2==0){

t[rozmiar-1-rza][2*i]=2;}

else { t[rozmiar-1-rza][2*i+1]=2; }

 

}

 

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Wiem, gdzie jest blad i co robie źle, niestety nie potrafie sobie go usunac tak, zeby dzialalo odpowiednio. Nie mam pojecia w jaki inny sposob to przypisywac, a jak zmieniam wartosci w forze to nie drukuje calej z kolei dla malych liczb. Z problemem poradzilem sobie troche na hama i z d*py, poniewaz zadeklarowalem poprostu duzo wieksza tablice i nawet jak mi to nadpisuje, to wczytywania i drukowania to nie obchodzi.

Wielkie dzieki za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

[...]poradzilem sobie troche na hama i z d*py[...]
Proponuję więcej ortografii ("chama" nie "hama") i nieco więcej kultury. Proponuję również, że następnym razem dostaniesz bana :>

Rozumiem emocje, ale tak jakoś od wielu lat staramy się obronić tę cząstkę naszego internetu przed wszechogarniającym chamstwem i gburowatością.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...