Ahoj, hodil jsem si tuhle část programu do testovacího mainu - pořád padá, když jej spustím a nemůžu přijit na to, co dělam blbě. Kdo najde chybu, dostane platinového bludišťáka:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int parsing_text(FILE *myFile){
int max = 10;
int i = 0;
char c;
char *text = NULL;
if((text = malloc(max*sizeof(char)))== NULL){printf("Not enoguht memory"); return 2;}
while((c = fgetc(myFile))!= EOF){
if(i == max){max = max*2; if(realloc(text, max*sizeof(char)) == NULL){return 2;}}
if(c == '\n'){
text[i] = '\0';
printf("%s \n",text);
i = 0;
}
text[i] = c;
printf("%c\n",text[i]);
i++;
}
free(text);
return 0;
}
int main()
{
FILE *myFile;
if((myFile = fopen("text.txt","r"))== NULL){printf("Could not open"); return 2;}
int ok = 0;
ok = parsing_text(myFile);
printf("Hello world!\n");
fclose(myFile);
if(ok==0){return 0;}else{return 2;}
}
vstup v text.txt:
work please 45
ploxy plos 88
vystup:
po vypsani 4 a 5 by to mělo vyhodit celej řetězec ale misto toho to vyhodí divné znaky, napadlo mě, jestli nezapisuju za hranici pole ale to bych neměl - když mám alokováno pro 10 znaků, uložím jen 9., inkrementuju i++ a potom hned reallocuju na dvojnásobek.