Czy ktoś mógłby mi powiedzieć, dlaczego plik się nie zmienia? Działa, gdy używam rewind
lub fseek
, ale nie inaczej.Zapisywanie w pliku za pomocą fputs w C
Co znajduje się w standardowy sposób przy użyciu fputs
po fgets
. Wskaźnik pliku znajduje się na pozycji 9, więc fputs
musi później pisać, ale nic nie robi.
W pliku:
abcd efgh ijkl mnor
w kodzie źródłowym:
char c;
char str[15];
FILE *fp = fopen("d:\\data.txt","r+");
fgets(str, 10, fp);
// fseek(fp, 9, SEEK_SET);
// rewind(fp);
printf("%d\n", ftell(fp));
// ftel shows that it's in "9".
printf("%s", str);
fputs(str, fp);
// why its not working
fclose(fp);
Kiedy i gdzie i jak można sprawdzić wyjście? Między wywołaniami 'fputs' i' fclose'? Być może powinieneś "przepłukać" bufory plików? –
Załóżmy, że plik, który został otwarty do odczytu i aktualizacji, zawiera dwa wiersze tekstu. Czytasz pierwszy wiersz, a następnie zapisujesz go w tym samym pliku. Jak myślisz, gdzie to zostanie napisane?Czy widzisz potrzebę wyraźnego ustawienia wskaźnika pliku po przeczytaniu, przed napisaniem? –
do edycji z bieżącej lokalizacji użyj 'fseek (fp, 0L, SEEK_CUR);' – krpra