Strona Główna     FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy


Poprzedni temat :: Następny temat
program w języku c z plikami
Autor Wiadomość
rafal 

Wysłany: 2006-12-13, 19:21   program w języku c z plikami

Mam napisać program który porównuje dwa pliki, których nazwy podane są jako parametry. Jeżeli są to pliki różne to podac pozycję pierwszej róznicy miedzy nimi.

Czy ktoś to może sprawdzić czy jest dobrze? wielkie dzięki

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

int main(int argc, char **argv)
FILE *plik1,*plik2;
plik1=fopen(argv[1],"r");
plik2=fopen(argv[2],"r");
int c,d;
bool blad=false;
while((c=fgetc(plik1))!=EOF)
{
d=fgetc(plik2);
if(c!=d || d==EOF)
{
printf("Pliki są różne! ");
blad=true;
break;
}
}

if (!blad) printf("Pliki sa identyczne!");
close(plik1);close(plik2);
return 0;
}
 
   
Maciek 
Programmer


Pomógł: 9 razy
Skąd: Radom
Wysłany: 2006-12-14, 16:43   

Niezupełnie. Po pierwsze piszesz to w c++, a nie w c jak napisałeś w tytule (przynajmniej używasz funkcji z c++) i tego nie skompilujesz w c.

Popełniłeś kilka błędów składniowych:
Kod:

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

int main(int argc, char **argv) //niepotrzebna ta druga gwiazdka, przecież nie robisz wskaźnika do wskaźnika
FILE *plik1,*plik2;
plik1=fopen(argv[1],"r");
plik2=fopen(argv[2],"r");
int c,d;
bool blad=false;
while((c=fgetc(plik1))!=EOF)
{
d=fgetc(plik2);
if(c!=d || d==EOF)
{
printf("Pliki są różne! ");
blad=true;
break;
}
}

if (!blad) printf("Pliki sa identyczne!");
close(plik1);close(plik2); //nie ma procedury close() tylko fclose do zamykania plków otworzonych procedurą fopen()
return 0;
}


Jak chcesz w c pisać to zmieniłek kilka drobnych rzeczy, żeby się kompilował. A tu masz kod poprawny.
Kod:
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[]){
FILE *plik1,*plik2;
int c,d;
int blad=0;
int i=0; //zmienna przechowująca pozycję w pliku
plik1=fopen(argv[1],"r");
plik2=fopen(argv[2],"r");

while((c=fgetc(plik1))!=EOF)
{
i++; //dodaje 1 do zmiennej określającej pozycję w pliku
d=fgetc(plik2);
if(c!=d || d==EOF)
{
printf("Pliki sa rozne! Pozycja: %d", i); //zmieniłem, żeby liczyło pozycję
blad=1;
break;
}
}

if (!blad) printf("Pliki sa identyczne!");
fclose(plik1);
fclose(plik2);
return 0;
}


A i nie ma w c stałej true i false, więc zamieniłem na 0 i 1.
_________________
"Zawsze łatwiej jest zmienić kod, którego jeszcze nie napisałem"
 
 
   
Raval
Gość
Wysłany: 2006-12-15, 21:08   

dzięki za poprawki!!!!!
 
   
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
system walidacji dla gości opracował Petermechanic
Forum komputerowe
Strona wygenerowana w 0,07 sekundy. Zapytań do SQL: 11