- 
 1. Data: 2010-04-13 14:12:30
 Temat: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: "Marcin M." <m...@g...com>
 Witam! 
 Bardzo bym prosił o pomoc. Dlaczego to nie działa choć się kompiluje?
 Nie jestem zbyt dobrym programistom, potrzebny mi po prostu program do
 szkoły. Radzę sobie z odczytywaniem plików ale nie mogę dopisywać do
 pliku żadnych danych ani nic w nim zmieniać. Nie mogę nawet po prostu
 przekopiować zawartości tego pliku:
 
 
 
 
 int przepisz (char *path1, char *path2)
 {
 FILE* zrodlo;
 FILE* target;
 
 zrodlo = fopen(path1,"rb");
 target = fopen(path2,"wb");
 rewind(zrodlo);
 fseek(zrodlo,0,SEEK_END);
 size_t p1size=ftell(zrodlo);
 
 rewind(target);
 rewind(zrodlo);
 char* bufer;
 bufer=0;
 fread(bufer,p1size,1,zrodlo);
 fwrite(bufer,p1size,1,target);
 fclose(zrodlo);
 fclose(target);
 return 0;
 }
 
 
 
 void main(void)
 {
 //przepisz("obraz3.bmp","przepisany.bmp");
 }
 
- 
 2. Data: 2010-04-13 14:28:19
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: Jacek Czerwinski <...@...z.pl>
 Marcin M. pisze: 
 > Witam!
 > Bardzo bym prosił o pomoc. Dlaczego to nie działa choć się kompiluje?
 
 Porobisz trochę w C, zobaczysz że kompilacja nie znaczy niemal nic.
 
 Ze słowem 'nie działa' to masz małe szanse dostać pomoc. Podawaj objawy,
 komunikaty, te sprawy. Wybacz, ale 'nie działa' to każda blondynka napisze.
 
 > Nie jestem zbyt dobrym programistom,
 polonistą też. Wybacz, sam się podkładasz.
 
 > potrzebny mi po prostu program do
 > szkoły. Radzę sobie z odczytywaniem plików ale nie mogę dopisywać do
 > pliku żadnych danych ani nic w nim zmieniać. Nie mogę nawet po prostu
 > przekopiować zawartości tego pliku:
 
 Po pierwsze wyniki działania funkcji np. fopen trzeba sprawdzać, jak nie
 gra, to sprawdzac dlaczego (errno, perror)
 
 Po drugie czytasz pod nieistniejący (niezainicjowany prawidłowo - skąd
 to rżnąłeś?) bufer.
 
 
- 
 3. Data: 2010-04-13 14:35:51
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: Mariusz Kruk <M...@e...eu.org>
 epsilon$ while read LINE; do echo \>"$LINE"; done < "Marcin M." 
 > fseek(zrodlo,0,SEEK_END);
 > size_t p1size=ftell(zrodlo);
 
 > fread(bufer,p1size,1,zrodlo);
 
 A poza rzeczami, które już ci koledzy napisali, jesteś bardzo odważny
 usiłując wczytać cały plik na raz.
 
 --
 \------------------------/
 | K...@e...eu.org |
 | http://epsilon.eu.org/ |
 /------------------------\
 
- 
 4. Data: 2010-04-13 14:39:50
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: Marcin Kwiatkowski <f...@l...bielsko.pl>
 On 2010-04-13, Marcin M. <m...@g...com> wrote: 
 > Witam!
 > Bardzo bym prosił o pomoc. Dlaczego to nie działa choć się kompiluje?
 > Nie jestem zbyt dobrym programistom, potrzebny mi po prostu program do
 > szkoły. Radzę sobie z odczytywaniem plików ale nie mogę dopisywać do
 > pliku żadnych danych ani nic w nim zmieniać. Nie mogę nawet po prostu
 > przekopiować zawartości tego pliku:
 >
 >
 >
 >
 > int przepisz (char *path1, char *path2)
 > {
 > FILE* zrodlo;
 > FILE* target;
 >
 > zrodlo = fopen(path1,"rb");
 > target = fopen(path2,"wb");
 > rewind(zrodlo);
 > fseek(zrodlo,0,SEEK_END);
 > size_t p1size=ftell(zrodlo);
 >
 > rewind(target);
 > rewind(zrodlo);
 > char* bufer;
 > bufer=0;
 Niepotrzebne. zamiast tego
 bufer=malloc(p1size);
 
 > fread(bufer,p1size,1,zrodlo);
 > fwrite(bufer,p1size,1,target);
 > fclose(zrodlo);
 > fclose(target);
 a tu
 free(bufer);
 > return 0;
 > }
 >
 >
 >
 > void main(void)
 > {
 > //przepisz("obraz3.bmp","przepisany.bmp");
 > }
 
 
 --
 Pozdrawiam,
 Marcin Kwiatkowski
 
- 
 5. Data: 2010-04-13 14:41:51
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: Marcin Kwiatkowski <f...@l...bielsko.pl>
 On 2010-04-13, Marcin Kwiatkowski <f...@l...bielsko.pl> wrote: 
 > On 2010-04-13, Marcin M. <m...@g...com> wrote:
 >> Witam!
 >> Bardzo bym prosił o pomoc. Dlaczego to nie działa choć się kompiluje?
 >> Nie jestem zbyt dobrym programistom, potrzebny mi po prostu program do
 >> szkoły. Radzę sobie z odczytywaniem plików ale nie mogę dopisywać do
 >> pliku żadnych danych ani nic w nim zmieniać. Nie mogę nawet po prostu
 >> przekopiować zawartości tego pliku:
 >>
 >>
 >>
 >>
 >> int przepisz (char *path1, char *path2)
 >> {
 >> FILE* zrodlo;
 >> FILE* target;
 >>
 >> zrodlo = fopen(path1,"rb");
 >> target = fopen(path2,"wb");
 >> rewind(zrodlo);
 >> fseek(zrodlo,0,SEEK_END);
 >> size_t p1size=ftell(zrodlo);
 >>
 >> rewind(target);
 >> rewind(zrodlo);
 >> char* bufer;
 >> bufer=0;
 > Niepotrzebne. zamiast tego
 > bufer=malloc(p1size);
 >
 >> fread(bufer,p1size,1,zrodlo);
 >> fwrite(bufer,p1size,1,target);
 >> fclose(zrodlo);
 >> fclose(target);
 > a tu
 > free(bufer);
 >> return 0;
 >> }
 >>
 >>
 >>
 >> void main(void)
 >> {
 >> //przepisz("obraz3.bmp","przepisany.bmp");
 >> }
 >
 >
 Ach... pospieszylem sie i niewyraznie napisalem :)
 oczywiscie niepotrzebnie zerujesz wskaznik. A przed opuszczeniem funkcji
 musisz zwolnic pamiec.
 
 --
 Pozdrawiam,
 Marcin Kwiatkowski
 
- 
 6. Data: 2010-04-13 16:06:45
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: "Marcin M." <m...@g...com>
 Dzięki, teraz działa. Niestety kłóci się z resztą programu. (Po 
 uruchomieniu dostaję komunikat "Przepraszamy, wystąpił problem z
 aplikacją Bitmapy.exe i zostanie ona zamknięta..." - dlaczego?).
 Wywołując TYLKO funkcje LoadData i LoadImage wszystko chodzi pięknie.
 Co do błędu ortograficznego - zauważyłem go po wrzuceniu posta a nie
 znalazłem opcji edytuj - przepraszam za urażenie Waszych zmysłów
 estetycznych : )
 Wczytuję cały plik bo są to niewielkie pliki (8x8), poza tym staram
 się tylko przetestować operacje na plikach i zrozumieć dobrze jak
 poprawnie używać fread i fwrite.
 Oto reszta:
 #include<iostream>
 #include<fstream>
 #include <Windows.h>
 
 using namespace std;
 
 
 class BMP
 
 {
 public:
 typedef struct
 {
 WORD bfType;
 DWORD bfSize;
 DWORD bfReserved1;
 DWORD bfReserved2;
 DWORD bfOffBits;
 } bmpFH;
 
 typedef struct
 {
 DWORD biSize;
 LONG biWidth;
 LONG biHeight;
 WORD biPlanes;
 WORD biBitCount;
 DWORD biCompression;
 DWORD biSizeImage;
 LONG biXPelsPerMeter;
 LONG biYPelsPerMeter;
 DWORD biClrUsed;
 DWORD biClrImportant;
 } bmpIH;
 
 typedef struct
 {
 int R;
 int G;
 int B;
 int empty;
 } colors;
 
 bmpFH FileHeader;
 bmpIH InfoHeader;
 colors IMGData;
 unsigned char *Data;
 
 };
 
 
 
 int x,y;
 
 char *buff;
 long DSize;
 int *binary;
 FILE* plik;
 FILE* data;
 
 
 
 int LoadImage(char *sciezka)
 {
 BMP BM;
 plik = fopen(sciezka, "rb");
 fread(&BM.FileHeader, sizeof(BMP::bmpFH), 1, plik);
 fread(&BM.InfoHeader, sizeof(BMP::bmpIH), 1, plik);
 if (BM.FileHeader.bfType != 0x4D42)
 {
 printf("UWAGA: To nie jest bitmapa\n");
 fclose(plik);
 return 1;
 }
 
 fseek(plik, 18, SEEK_SET);
 fread(&x, sizeof(LONG), 1, plik);
 fread(&y, sizeof(LONG), 1, plik);
 cout<<"Rozmiar obrazu (XxY) to: "<<x<<"x"<<y<<endl;
 cout<<"Maksymalny rozmiar przechowywanych informacji: "<<((x-(x
 %4))*y*3)<<" bitow"<<endl;
 }
 
 
 int LoadData(char *sciezka)
 {
 
 data = fopen(sciezka, "rb");
 fseek(data,0,SEEK_END);
 DSize= ftell(data)*8;
 if (DSize>((x-(x%4))*y*3))
 {
 printf("UWAGA: Rozmiar pliku zbyt duzy\n");
 fclose(data);
 return 1;
 }
 cout<<"Aktualny rozmiar pliku z danymi: "<<DSize<<endl;
 fseek(data,0,SEEK_SET);
 
 char*buff;
 buff=(char*)malloc(sizeof(char)*(DSize/8));
 fread(buff,1,(DSize/8),data);
 
 binary = new int[DSize];
 int i,j;
 i=0;
 j=0;
 for (i=0; i<=DSize; i=i+8)
 {
 j=0;
 for(unsigned m = 128; m > 0; m >>= 1)
 {
 if(buff[i/8] & m)
 {binary[i+j]=1; }
 else
 {binary[i+j]=0; }
 j++;
 }
 } fclose(data);
 free(buff);
 }
 
 
 int przepisz (char *path1, char *path2)
 {
 FILE* zrodlo;
 FILE* target;
 
 zrodlo = fopen(path1,"rb");
 target = fopen(path2,"wb");
 rewind(zrodlo);
 fseek(zrodlo,0,SEEK_END);
 size_t p1size=ftell(zrodlo);
 
 rewind(target);
 rewind(zrodlo);
 void*bufer;
 bufer=malloc(p1size);
 fread(bufer,p1size,1,zrodlo);
 fwrite(bufer,p1size,1,target);
 fclose(zrodlo);
 fclose(target);
 free(bufer);
 return 0;
 
 }
 
 void main(void)
 {
 LoadImage("obraz3.bmp");
 LoadData("dane.dnn");
 //przepisz("obraz3.bmp","przepisany.bmp");
 
 
 }
 
- 
 7. Data: 2010-04-13 16:06:58
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: "Marcin M." <m...@g...com>
 Dzięki, teraz działa. Niestety kłóci się z resztą programu. (Po 
 uruchomieniu dostaję komunikat "Przepraszamy, wystąpił problem z
 aplikacją Bitmapy.exe i zostanie ona zamknięta..." - dlaczego?).
 Wywołując TYLKO funkcje LoadData i LoadImage wszystko chodzi pięknie.
 Co do błędu ortograficznego - zauważyłem go po wrzuceniu posta a nie
 znalazłem opcji edytuj - przepraszam za urażenie Waszych zmysłów
 estetycznych : )
 Wczytuję cały plik bo są to niewielkie pliki (8x8), poza tym staram
 się tylko przetestować operacje na plikach i zrozumieć dobrze jak
 poprawnie używać fread i fwrite.
 Oto reszta:
 #include<iostream>
 #include<fstream>
 #include <Windows.h>
 
 using namespace std;
 
 
 class BMP
 
 {
 public:
 typedef struct
 {
 WORD bfType;
 DWORD bfSize;
 DWORD bfReserved1;
 DWORD bfReserved2;
 DWORD bfOffBits;
 } bmpFH;
 
 typedef struct
 {
 DWORD biSize;
 LONG biWidth;
 LONG biHeight;
 WORD biPlanes;
 WORD biBitCount;
 DWORD biCompression;
 DWORD biSizeImage;
 LONG biXPelsPerMeter;
 LONG biYPelsPerMeter;
 DWORD biClrUsed;
 DWORD biClrImportant;
 } bmpIH;
 
 typedef struct
 {
 int R;
 int G;
 int B;
 int empty;
 } colors;
 
 bmpFH FileHeader;
 bmpIH InfoHeader;
 colors IMGData;
 unsigned char *Data;
 
 };
 
 
 
 int x,y;
 
 char *buff;
 long DSize;
 int *binary;
 FILE* plik;
 FILE* data;
 
 
 
 int LoadImage(char *sciezka)
 {
 BMP BM;
 plik = fopen(sciezka, "rb");
 fread(&BM.FileHeader, sizeof(BMP::bmpFH), 1, plik);
 fread(&BM.InfoHeader, sizeof(BMP::bmpIH), 1, plik);
 if (BM.FileHeader.bfType != 0x4D42)
 {
 printf("UWAGA: To nie jest bitmapa\n");
 fclose(plik);
 return 1;
 }
 
 fseek(plik, 18, SEEK_SET);
 fread(&x, sizeof(LONG), 1, plik);
 fread(&y, sizeof(LONG), 1, plik);
 cout<<"Rozmiar obrazu (XxY) to: "<<x<<"x"<<y<<endl;
 cout<<"Maksymalny rozmiar przechowywanych informacji: "<<((x-(x
 %4))*y*3)<<" bitow"<<endl;
 }
 
 
 int LoadData(char *sciezka)
 {
 
 data = fopen(sciezka, "rb");
 fseek(data,0,SEEK_END);
 DSize= ftell(data)*8;
 if (DSize>((x-(x%4))*y*3))
 {
 printf("UWAGA: Rozmiar pliku zbyt duzy\n");
 fclose(data);
 return 1;
 }
 cout<<"Aktualny rozmiar pliku z danymi: "<<DSize<<endl;
 fseek(data,0,SEEK_SET);
 
 char*buff;
 buff=(char*)malloc(sizeof(char)*(DSize/8));
 fread(buff,1,(DSize/8),data);
 
 binary = new int[DSize];
 int i,j;
 i=0;
 j=0;
 for (i=0; i<=DSize; i=i+8)
 {
 j=0;
 for(unsigned m = 128; m > 0; m >>= 1)
 {
 if(buff[i/8] & m)
 {binary[i+j]=1; }
 else
 {binary[i+j]=0; }
 j++;
 }
 } fclose(data);
 free(buff);
 }
 
 
 int przepisz (char *path1, char *path2)
 {
 FILE* zrodlo;
 FILE* target;
 
 zrodlo = fopen(path1,"rb");
 target = fopen(path2,"wb");
 rewind(zrodlo);
 fseek(zrodlo,0,SEEK_END);
 size_t p1size=ftell(zrodlo);
 
 rewind(target);
 rewind(zrodlo);
 void*bufer;
 bufer=malloc(p1size);
 fread(bufer,p1size,1,zrodlo);
 fwrite(bufer,p1size,1,target);
 fclose(zrodlo);
 fclose(target);
 free(bufer);
 return 0;
 
 }
 
 void main(void)
 {
 LoadImage("obraz3.bmp");
 LoadData("dane.dnn");
 //przepisz("obraz3.bmp","przepisany.bmp");
 
 
 }
 
- 
 8. Data: 2010-04-13 18:55:11
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: Mariusz Kruk <M...@e...eu.org>
 epsilon$ while read LINE; do echo \>"$LINE"; done < "Marcin M." 
 >Dzięki, teraz działa. Niestety kłóci się z resztą programu. (Po
 >uruchomieniu dostaję komunikat "Przepraszamy, wystąpił problem z
 >aplikacją Bitmapy.exe i zostanie ona zamknięta..." - dlaczego?).
 
 Prawdopodobnie coś spaprałeś gdzie indziej.
 
 >Wywołując TYLKO funkcje LoadData i LoadImage wszystko chodzi pięknie.
 
 "Jeśli wywołuję", a nie "wywołując" (idąc do szkoły świeciło słońce).
 
 >Wczytuję cały plik bo są to niewielkie pliki (8x8), poza tym staram
 >się tylko przetestować operacje na plikach i zrozumieć dobrze jak
 >poprawnie używać fread i fwrite.
 
 Dobrze byłoby jakbyś zrozumiał dlaczego twoje podejście jest w ogólności
 nienajlepsze (jak jesteś _absolutnie pewien_ warunków, czasami możesz
 przyjąć pewne założenia, ale i tak pewnie kiedyś dostaniesz nimi po
 głowie).
 
 >Oto reszta:
 
 Łojeza. Człowieku, zdecyduj się w czym piszesz.
 C++ to _nie_ jest takie "fajniejsze C, bo można używać cout".
 
 
 --
 \.\.\.\.\.\.\.\.\.\.\.\.\.\
 .\....@e...eu.org.\.\.
 \.http://epsilon.eu.org/\.\
 .\.\.\.\.\.\.\.\.\.\.\.\.\.
 
- 
 9. Data: 2010-04-13 22:01:12
 Temat: Re: Operacje na plikach (odczyt i zapis fread i fwrite)
 Od: gacek <g...@w...pl>
 Marcin M. wrote: 
 > void main(void)
 > {
 > //przepisz("obraz3.bmp","przepisany.bmp");
 > }
 
 no dobra, ale tego to nikt nie widzi?
 
 odkomentuj (skasuj //).
 
 
 gacek
 


 do góry
 do góry![Jak zwiększyć otwieralność mailingu? 6 sposobów na wysoki Open Rate [© jakub krechowicz - fotolia.com] Jak zwiększyć otwieralność mailingu? 6 sposobów na wysoki Open Rate](https://s3.egospodarka.pl/grafika2/mailing/Jak-zwiekszyc-otwieralnosc-mailingu-6-sposobow-na-wysoki-Open-Rate-222959-150x100crop.jpg) 
![Jak mierzyć i oceniać skuteczność mailingu. 5 najważniejszych wskaźników [© maicasaa - Fotolia.com] Jak mierzyć i oceniać skuteczność mailingu. 5 najważniejszych wskaźników](https://s3.egospodarka.pl/grafika2/mailing/Jak-mierzyc-i-oceniac-skutecznosc-mailingu-5-najwazniejszych-wskaznikow-219695-150x100crop.jpg) 
![Najtańsze pożyczki pozabankowe - ranking [© Daniel Krasoń - Fotolia.com] Najtańsze pożyczki pozabankowe - ranking](https://s3.egospodarka.pl/grafika2/pozyczki-pozabankowe/Najtansze-pozyczki-pozabankowe-ranking-212702-150x100crop.jpg) 
![Jaki jest koszt przejechania 100 km samochodem? Sprawdź porównanie benzyny, oleju napędowego, LPG i innych paliw. [© matthias21 - Fotolia.com] Jaki jest koszt przejechania 100 km samochodem? Sprawdź porównanie benzyny, oleju napędowego, LPG i innych paliw.](https://s3.egospodarka.pl/grafika2/wydatki-na-paliwo/Jaki-jest-koszt-przejechania-100-km-samochodem-Sprawdz-porownanie-benzyny-oleju-napedowego-LPG-i-innych-paliw-262279-150x100crop.jpg) 
 Elektromobilność dojrzewa. Auta elektryczne kupujemy z rozsądku, nie dla idei
Elektromobilność dojrzewa. Auta elektryczne kupujemy z rozsądku, nie dla idei 
 
 
![Wynajem mieszkania w Warszawie pochłania 44% pensji. Zobacz, jak wypadamy na tle Europy [© pixabay] Wynajem mieszkania w Warszawie pochłania 44% pensji. Zobacz, jak wypadamy na tle Europy](https://s3.egospodarka.pl/grafika2/rynek-najmu/Wynajem-mieszkania-w-Warszawie-pochlania-44-pensji-Zobacz-jak-wypadamy-na-tle-Europy-269391-150x100crop.jpg) 
![Lot z niespodzianką - jak overbooking zmienia podróż i jakie prawa mają pasażerowie? [© wygenerowane przez AI] Lot z niespodzianką - jak overbooking zmienia podróż i jakie prawa mają pasażerowie?](https://s3.egospodarka.pl/grafika2/prawa-pasazera/Lot-z-niespodzianka-jak-overbooking-zmienia-podroz-i-jakie-prawa-maja-pasazerowie-269384-150x100crop.jpg) 
![Lider z sercem: empatia i zaufanie jako klucz do sukcesu zespołu [© wygenerowane przez AI] Lider z sercem: empatia i zaufanie jako klucz do sukcesu zespołu](https://s3.egospodarka.pl/grafika2/lider/Lider-z-sercem-empatia-i-zaufanie-jako-klucz-do-sukcesu-zespolu-269133-150x100crop.png) 
![Bańka AI za 5 bilionów dolarów: Kiedy inwestorzy powiedzą: sprawdzam? [© wygenerowane przez AI] Bańka AI za 5 bilionów dolarów: Kiedy inwestorzy powiedzą: sprawdzam?](https://s3.egospodarka.pl/grafika2/AI/Banka-AI-za-5-bilionow-dolarow-Kiedy-inwestorzy-powiedza-sprawdzam-269382-150x100crop.png) 
 
 
