[+] Kopiowanie plików w programie napisanym w C+ pod Ubuntu

Problemy dotyczące innych systemów operacyjnych
dizaion
Posty: 3
Rejestracja: 16 marca 2011, 14:54

[+] Kopiowanie plików w programie napisanym w C+ pod Ubuntu

Post autor: dizaion »

Problem wygląda następująco:
Program uruchamiamy z dwoma parametrami - nazwa pliku, który chcemy skopiować i nazwa pliku, który będzie jego kopią. Kompilacja przechodzi bez żadnych problemów, ale po uruchomieniu pokazuje się komunikat:

Kod: Zaznacz cały

Naruszenie ochrony pamięci
i nowo powstały plik (który miał być kopią podanego pliku) powstaje, jednak jest zupełnie pusty.
Pomoże ktoś (używam Ubuntu 10.10, kompiluje w gcc, program napisany w c).

Oto kod:

Kod: Zaznacz cały

#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,ile;
char buf [128];
FILE *we,*wy;
if (argc!=3){ puts ("Podaj nazwy pliku xrodlowego i wynikowego"); return -1; }
we = fopen(argv[1], "rb");
if (we = NULL) { printf ("blad otwarcia %s\n", argv[1]); return -2; }
wy = fopen (argv[2], "wb");
if (wy = NULL){ printf("blad otwarcia pliku wy, %s\n", argv[2]); return -3;}

while ((ile = fread(buf,1,127,we))>0)
{ 
fwrite(buf,1,ile,wy);
}

fclose(we);
fclose(wy);
}
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Kod: Zaznacz cały

#include <stdio.h>
int main(int argc, char *argv[])
{
int ile;
char buf [128];
FILE *we,*wy;
if (argc!=3){ puts ("Podaj nazwy pliku xrodlowego i wynikowego"); return -1; }
we = fopen(argv[1], "rb");
if (we == NULL) { printf ("blad otwarcia %s\n", argv[1]); return -2; }
wy = fopen (argv[2], "wb");
if (wy == NULL){ printf("blad otwarcia pliku wy, %s\n", argv[2]); return -3;}

while (feof(we)==0)
{ 
ile = fread(buf,1,127,we);
fwrite(buf,1,ile,wy);
}

fclose(we);
fclose(wy);
}                         
dizaion
Posty: 3
Rejestracja: 16 marca 2011, 14:54

Post autor: dizaion »

Dziękuję za pomoc. Teraz już działa.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

dizaion pisze:Teraz już działa.
I oczywiście wiesz już gdzie popełniłeś błąd?
dizaion
Posty: 3
Rejestracja: 16 marca 2011, 14:54

Post autor: dizaion »

Jasne. Jeszcze raz dziękuję.
ODPOWIEDZ