[c] char odczyt z pliku

0

Witam,
odczytuję sobie zdania z pliku
fscanf(fp,"%s",&zdanie);
ale problem tkwi w allokacji pamięci. Jak mogę zaalokwać tyle pamięci ilr, potrzebuję, nie miej nie więcej?? Jeżeli napiszę:
char zdanie[100];
a napis w pliku ma mniej liter, to po wypisaniu po prostu się wykrzacza..

1

Przy zapisywaniu możesz przed samym napisem umieścić jego długość, przy wczytywaniu odczytać i odczytać tyle liter ile potrzeba. A jeżeli szkoda ci bajta, dwóch czy tam czterech, możesz stworzyć jakiś bufor, wczytywać po literce aż do znaku o kodzie 0. Jak bufor będzie za mały, powiększasz go (np. realloc).

0

Pics or it didn't happen.
Ale jeśli piszesz

char zdanie[100];
fscanf(fp,"%s",&zdanie);

to na bank będą się działy cuda...

0

@Rev a co jeżeli wcześniej nie zapisuję do pliku, tylko chcę odczytać??

0

Nie mam pojęcia dlaczego, ale na żadnym forum, na prawdę na żadnym nie jest opisane jak to zrobić. Wszyscy mądrzą się i wysyłają do wujka google albo podają te same rozwiązanie, które krzaczy.

0

@charowiec to zrób tak jak napisał Rev i czytaj sobie po znaku jak ci szkoda kilku bajtów. Albo wczytaj cały plik na raz a potem sobie to dziel na te swoje zdania.
A co do "krzaczącego rozwiązania" to już pisałem: pics or it didn't happen.
Pokaż kod którego używasz i owe krzaki które rzekomo dostajesz. Bo tak to mogę co najwyżej ci z kuli powróżyć co jest nie tak...

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