C: Pisanie do pliku

sers
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 6 maja 2008, o 19:30
Płeć: Mężczyzna
Lokalizacja: zoso
Podziękował: 12 razy
Pomógł: 5 razy

C: Pisanie do pliku

Post autor: sers »

Mam program:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ()
{
FILE *fp;
char tekst[300];
do {
printf("Napisz cos:
");
gets(tekst);
} while (strlen(tekst) == 0);
printf("Tekst: %s
", tekst);
if ((fp=fopen("test.txt", "a+"))==NULL) {
printf ("Nie mogę otworzyć pliku test.txt do zapisu!
");
exit(1);
}
fprintf (fp, "%s
", tekst);
fclose (fp);
return 0;
}

Oraz mam pytanie:
Dlaczego, gdy plik test.txt nie istnieje i wprowadzam ciąg znaków, to zostaje umieszczony on w pierwszej linii pliku, natomiast gdy plik test.txt istnieje, ale jest pusty, ciąg znaków zostaje umieszczony w linii drugiej. Jak sprawić, aby ciąg został zapisany w pierwszej linii?
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C: Pisanie do pliku

Post autor: soku11 »

Programik ten wprowadza tekst zawsze na koncu pliku. Jesli go nie ma - tworzy i zapisuje do niego. Sprawdzilem u sibie i dziala dobrze. U ciebie zapisuje w drugiej linijce, bo najprawdopodobniej twoj plik nie jest pusty, tylko ma w srodku 'enter'. Tak wiec wszystko zapisze sie do nowej lini.

Pozdrawiam.
sers
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 6 maja 2008, o 19:30
Płeć: Mężczyzna
Lokalizacja: zoso
Podziękował: 12 razy
Pomógł: 5 razy

C: Pisanie do pliku

Post autor: sers »

Otworzyłem plik, skasowałem wszystko i sprawdziłem czy nie ma entera lub spacji. Wciąż dopisuje od drugiej linii.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C: Pisanie do pliku

Post autor: soku11 »

Hmpf... A czym kasujesz? Moze program sam dodaje znak konca linii do pliku po zapisie? Czy rozmiar pliku jest na pewno 0?

Pozdrawiam.
sers
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 6 maja 2008, o 19:30
Płeć: Mężczyzna
Lokalizacja: zoso
Podziękował: 12 razy
Pomógł: 5 razy

C: Pisanie do pliku

Post autor: sers »

Backspacem. Napisałem:

fp=fopen("test.txt", "r");
for (i=0;c==EOF;i++) c=fgetc(fp);
printf("Ilosc znakow: %d
",i);

ale coś nie chce liczyć znaków.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C: Pisanie do pliku

Post autor: soku11 »

Chodzilo mi o program w ktorym to otwierasz Co do rozmiaru - sprawdz w wlasciwosciach bedzie szybciej.

Pozdrawiam.
sers
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 6 maja 2008, o 19:30
Płeć: Mężczyzna
Lokalizacja: zoso
Podziękował: 12 razy
Pomógł: 5 razy

C: Pisanie do pliku

Post autor: sers »

Faktycznie, we właściwościach pokazuje 1 bajt.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C: Pisanie do pliku

Post autor: soku11 »

Stworz pusty plik poprzez Nowy->Plik tekstowy (bo zakladam, ze z Linuxa nie korzystasz). Zmien tylko jego nazwe i nie otwieraj. Jak uruchomisz program, to powinno dobrze sie wpisac

Pozdrawiam.
ODPOWIEDZ