Wczytanie wartości do tablicy dwuwymiarowej

0

Mam taki programik:

File *plik1, *plik2;
int tablica[8][8]l

void zapis(int tab[][8]){

    int k,i;
 if ((plik2=fopen("plik2.txt", "w"))==NULL) {
     
 for(k=0;k<8;k++){
     for(i=0;i<8;i++){
    fprintf(stangry2, "%d", tab[k][i]);
     }}
     fclose(plik2);
}}

void wczyt(int tab[][8]){

  int k,i;
 plik1=fopen("plik1.txt", "r");


     for(k=0;k<8;k++){
         for(i=0;i<8;i++){



  fscanf(plik1,"%d",&tab[k][i]);


     }}
     fclose(plik1);
}

int main(){
wczyt(tablica);
zapis(tablica);



 

i lipa, zapisuje jakieś śmieci (głównie zera, choć 6 pierwszych wartości nie są zerami).

w pierwszym ifie jest oczywiści '!=' zamiast '=='. Pomyłka przy kopiowaniu i edytce....

Aha, problem jest z wczytywaniem. Sam zapis działa poprawnie.

0

Otwierasz plik2:
plik2=fopen("plik2.txt", "w");
zapisujesz do stangry2:
fprintf(stangry2, "%d", tab[k][i]);
Nie sądzę że to się nawet skompilowało, więc prawdopodobnie działa ci poprzednia wersja, czytaj uważnie komunikaty.

0

Kod z programu trochę edytowałem i zapomniałem to zmienic wklejajac tutaj. W programie mam poprawnie, poza tym jak już napisałem zapis działa...

0

No to wklej aktualny kod.
W tym kodzie dużo bagów, np zapisujesz do jednego pliku a czytasz z innego.
Masz tam przycisk edytuj, aby niepotrzebnie nie mnożyć postów.

0
 
File *plik1, *plik2;
int tablica[8][8]l
 
void zapis(int tab[][8]){
 
    int k,i;
 if ((plik2=fopen("plik2.txt", "w"))!=NULL) {
 
 for(k=0;k<8;k++){
     for(i=0;i<8;i++){
    fprintf(plik2, "%d", tab[k][i]);
     }}
     fclose(plik2);
}}
 
void wczyt(int tab[][8]){
 
  int k,i;
 plik1=fopen("plik1.txt", "r");
 
 
     for(k=0;k<8;k++){
         for(i=0;i<8;i++){
 
 
 
  fscanf(plik1,"%d",&tab[k][i]);
 
 
     }}
     fclose(plik1);
}
 
int main(){
wczyt(tablica);
zapis(tablica);
}

w pliku plik 1 są 64 zera, w pliku wynikowym jakaś liczba (34760) i 63 zera.

Nie mam edytki...

Przy zmianie pliku plik1 na dowolne inne liczby, plik2 się nie zmienia ale na 100% jest tworzony i nadpisywany.

0

Masz dwa błędy:
jeden w zapisie - nie oddzielasz w żaden sposób liczb w pliku w wyniku czego jeżeli zapiszesz do pliku np 11 12 to w pliku będzie 1112 a przy odczycie nie wiadomo czy to było 11 12 czy 1 112 czy też 111 2
drugi przy odczycie, odczytujesz nie ten plik w którym masz coś zapisano.

#include <stdio.h>

int zapis(int tab[][8])
  {
   FILE *plik;
   int y,x;
   
   if((plik=fopen("plik.txt","w"))!=NULL)
     {
      for(y=0;y<8;++y)
        {
         for(x=0;x<8;++x)
           {
            fprintf(plik," %d"+!x,tab[y][x]);
           }
         fprintf(plik,"\n");
        }
      fclose(plik);
      return 1;
     }
   return 0;
  }
 
int wczyt(int tab[][8])
  {
   FILE *plik;
   int y,x;
   
   if((plik=fopen("plik.txt","r"))!=NULL)
     {
      for(y=0;y<8;++y)
        {
         for(x=0;x<8;++x)
           {
            fscanf(plik,"%d",&tab[y][x]);
           }
        }
      fclose(plik);
      return 1;
     }
   return 0;
  }
 
int main()
  {
   int tz[8][8],tw[8][8],y,x;
   for(y=0;y<8;++y) for(x=0;x<8;++x) tz[y][x]=(y+1)*(x+1);
   if(!zapis(tz)) printf("Nie udalo sie zapisac\n");
   if(!wczyt(tw)) printf("Nie udalo sie wczytac\n"); 
   for(y=0;y<8;++y)
     {
      for(x=0;x<8;++x)
        {
         printf("%3d",tw[y][x]);
        }
      printf("\n");
     }
   getchar();
   return 0;
  }
0

Dziękuję, wystarczyło dodanie spacji ale nie zorientowałbym się gdyby nie wykrycie błędu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1