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;
}
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"
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