ďťż

Ładny brzuch

#include<stdio.h> int main() { FILE *stream,*stream2; char tab[64]; stream=fopen("xxx.txt","r"); if(stream!=NULL) { fread(tab,sizeof(char),64,stream); fclose(stream); } else printf("nie mozna odczytac pliku xxx.txt"); stream2=fopen("xxx2.txt","w"); if(stream2!=NULL) { fwrite(tab,sizeof(char),64,stream2); fclose(stream2); } else printf("blad"); return 0; }

Nie wiem czemu gdy chce otworzyć plik xxx2.txt to pojawia sie blad z kodowaniem a jak otwieram to w vim'ie to sie otwiera ale na polach ktore byly jeszcze w tablicy czyli w sumie tych 64 pojawiają sie dziwne krzaczki :/

kompilator: gcc



nie odpalalem programu, ale..

z tego co widze to pobierasz 64 znaki, a powienes w tym przypadku 63, poniewaz ostatni bajt powienien byc zarezerwowany dla znaku 0, czyli konca lancucha znakow

mysle ze jak dasz "char tab[65]" to nic wiecej nie bedziesz musial zmieniac..
ale sprawdz
Użytkownik fernandez edytował ten post 08 styczeń 2008, 00:46
ale chodzi właśnie o to że tam jest chyba za dużo znaków i zapodaje śmiecu, no i nie wiem czy to może być przyczyną tego kodowania błędnego

u mnie to działa, kopiuje 63 znaki...
Użytkownik Atal edytował ten post 08 styczeń 2008, 00:46


a co ciekawe u mnie kopiuje dobrze, bez zadnych modyfikacji..
ale 64 znaki o_O

znak 0 akurat do czego innego sluzy, w tym przypadku chyba ne jest potrzebny ;)
zczytujesz dokladnie takie dane jakie zapisujesz..

kompiluje gcc (MinGW)
Użytkownik fernandez edytował ten post 08 styczeń 2008, 01:01
1. Kodowanie: Na windowsie musisz jeszcze podać typ odczytu: binarny ("b") lub tekstowy ("t"), domyślnie jest binarny.
fopen( strFile, "tw" );
2. Do zczytywania tekstu lepiej się posłużyć funkcja fgets - bierze całą linię tekstu.
Inczej musisz pobrać rozmiar (fseek, ftell)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •