ďťż
chomiki
Fujitsu Amilo L1310G Sklepowy-NOWY+programy orginalne
Poszukuje programu, który zrobił by zrzut ekranu z BIOS'a
Pomocy - program do cięcia muzyki -cool edit
Biologia - programy edukacyjne oraz grgy i quizy
Szukam programu pokazującego obroty wiatraka CPU...
Program do zmiany/aktualizacji z internetu tagów IDv3/4
Potrzebuje Programu Do Kasowania Słów Z Piosenek
[delphi] problem ze zmianą ikony programu
Program do zmiany IP - problem z rapidshare.. :/
Program do rysowania osi współrzędnych
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • therasmus.pev.pl

  • chomiki

    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:


    #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.

    #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.
    dzięki za poprawki!!!!!
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • mandragora32.opx.pl
  • ďťż
    Wszelkie Prawa ZastrzeĹźone! chomiki Design by SZABLONY.maniak.pl.