Witam, napisałem program i nie wiem czemu od przeglądania tablicy aż do znaku pustego przestaje działać, czy ktoś może powiedzieć dlaczego?
#include <stdio.h>
#include <stdlib.h>
int ilosc_zdan=10;
void przepisz(FILE*,FILE*);
int * powieksztab(int*);
int main(){
FILE *plik1,*plik2;
plik1=fopen("zdania.txt","r");
if(plik1==NULL){
printf("!--Nie moszna otworzyc pliku do odczytu--!");
return 1;
}
plik2=fopen("zapis.txt","w");
if(plik2==NULL){
printf("!--Nie moszna otworzyc pliku do zapisu--!");
return 1;
}
przepisz(plik1,plik2);
return 0;
}
int * powieksztab(int*a){
int x;
int * b=(int*)malloc(ilosc_zdan*2*sizeof(int));
for(x=0;x<ilosc_zdan;x++)
b[x]=a[x];
free(a);
return b;
}
void przepisz(FILE*odczyt,FILE*zapis){
int * x;
int y=0,z=0,y1=0,x2=0,y2=0,p=0,p1=0;
x=(int*)malloc(ilosc_zdan*sizeof(int));
int licznik_zdan=0;
char ** tab;
int h,h2;
while(fgetc(odczyt)!=EOF){
if(y==ilosc_zdan){
x=powieksztab(x);
}
x[y]=0;
fseek(odczyt,-1,1);
int z;
while(fgetc(odczyt)!='.'&&fgetc(odczyt)!='?'&&fgetc(odczyt)!='!'&&fgetc(odczyt)!=EOF){
fseek(odczyt,-4,1);
z=fgetc(odczyt);
printf("%c",z);
x[y]++;
}
licznik_zdan++;
printf("%d\n",x[y]);
y++;
}
x[y-1]+=2;
x[y]='\0';
licznik_zdan--;
tab=(char**)malloc(licznik_zdan*sizeof(char*));
fseek(odczyt,0,0);
//////////////////////////////////
//od tego miejsca przestaje dzialac
//////////////////////////////////
while(x[y1]!='\0'){
tab[y1]=(char*)malloc(x[y1]*sizeof(char));
y1++;
}
while(fgetc(odczyt)!=EOF){
fseek(odczyt,-1,1);
while(fgetc(odczyt)!='.'&&fgetc(odczyt)!='?'&&fgetc(odczyt)!='!'&&fgetc(odczyt)!=EOF){
fseek(odczyt,-4,1);
tab[x2][y2]=fgetc(odczyt);
y2++;
}
x2++;
}
h=x[0];
while(x[p]!='\0'){
p++;
while(x[p1]!='\0'){
if(h>x[p1])
h=x[p1];
h2=p1;
p1++;
}
fputs(tab[p1],zapis);
}
}