- Zapoznaj się z pojęciem formatowania kodu: http://4programmers.net/Forum/998482
- Nie nadużywaj postinkrementcaji: http://4programmers.net/Forum/1101404 to:
for(i=0;i<N;++i)
zadziała dokładnie tak samo jak to: for(i=0;i<N;++i)
w sensie wartości i
- Używaj sensownego nazewnictwa, bo za chwile nie będziesz wiedział czy
i
leci po M
czy po N
- funkcja nic nie zwracająca powinna deklarować zwracany typ jako
void
W sumie ma być coś na kształt:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define Ysize 4
#define Xsize 4
void tbRand(unsigned tb[])
{
size_t i;
for(i=0;i<Ysize*Xsize;++i) tb[i]=1+rand()%9; // rozumiem że chcesz w granicach 1..9
}
void tbShow(unsigned tb[])
{
size_t i,y,x;
for(i=y=0;y<Ysize;++y,printf("\n")) for(x=0;x<Xsize;++x,++i) printf(" %d",tb[i]);
printf("\n");
}
int tbWrite(const char *fileName,unsigned tb[])
{
size_t i,y,x;
FILE *wr=fopen(fileName,"w");
if(!wr) return 0;
for(i=y=0;y<Ysize;++y,fprintf(wr,"\n")) for(x=0;x<Xsize;++x,++i) fprintf(wr," %d",tb[i]);
fclose(wr);
return 1;
}
int tbRead(const char *fileName,unsigned tb[])
{
size_t i,y,x;
FILE *rd=fopen(fileName,"r");
if(!rd) return 0;
for(i=y=0;y<Ysize;++y) for(x=0;x<Xsize;++x,++i) fscanf(rd,"%d",&tb[i]);
return !feof(rd);
}
int main()
{
unsigned A[Ysize*Xsize],B[Ysize*Xsize];
tbRand(A);
tbShow(A);
if(!tbWrite("data.txt",A)) printf("Nie udalo sie zapisac\n");
if(!tbRead("data.txt",B)) printf("Nie udalo sie odczytac\n");
tbShow(B);
return 0;
}