Reklama
Pokazuje wyniki od 1 do 7 z 7

Temat: [C] Operowanie na plikach tekstowych

  1. #1
    Avatar Manufactury
    Data rejestracji
    2007
    Położenie
    Białystok
    Wiek
    31
    Posty
    230
    Siła reputacji
    18

    Domyślny [C] Operowanie na plikach tekstowych

    Witam.
    Mam następujące polecenie:

    Zadanie 8.3
    Napisz funkcję, która z dwóch plików utworzy nowy plik, zawierający najpierw znaki pierwszego pliku, a potem drugiego. Ścieżki dostępu do plików przekaż jako parametry funkcji
    Mój kod:

    Kod :
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void f(char *plik1,char *plik2,char *plik)
    {
    	char t[50];
    	char y[50];
    	
    
    	int i=0,a=0,j=0,b=0;
    	FILE *q;
    	FILE *w;
    	FILE *e;
    	e= fopen(plik,"w");
    	q = fopen(plik1,"r");
    	w = fopen(plik2,"r");
    	if(q==NULL)
    	{
    		printf("blad z plikiem %s",plik1);
    	}
    	else {
    	
    	while((!feof(q))&&i<50)
    	{
    		fscanf(q,"%s",t[i]);
    		i++;
    		a++;
    	}
    	a--;
    }
    if(w==NULL)
    {
    	printf("blad z plikiem %s",plik2);
    }
    else
    {
    		while((!feof(w))&&j<50)
    	{
    		fscanf(q,"%s",y[j]);
    		j++;
    		b++;
    	}
    	b--;
    }
    
    for(int k=0;k!=a;k++)
    {
    	
    	fprintf(plik,"%s\n",t[k]);
    
    	
    }
    for(int l=0;l!=b;l++)
    {
    	fprintf(plik,"%s\n",y[l]);
    }
    fcloseall();
    }
    
    main()
    {
    	char plik1[50];
    	char plik2[50];
    	char plik3[50];
    	printf("Podaj sciezke do pierwszego pliku\n");
    	scanf("%s",plik1);
    		printf("Podaj sciezke do drugiego pliku\n");
    	scanf("%s",plik2);
    		printf("Podaj sciezke do pliku wyjsciowego\n");
    	scanf("%s",plik3);
    	f(plik1,plik2,plik3);
    	printf("done");
    }
    Kompilator wywala błąd przy fprintf - wie ktoś może co jest nie halo? Bo ocipieje zaraz.

    Z góry dziękuję i pozdrawiam.

  2. #2
    Avatar Gray
    Data rejestracji
    2007
    Położenie
    Gdańsk
    Posty
    2,847
    Siła reputacji
    19

    Domyślny

    fprintf bierze jako parametr FILE*, czyli to:
    Kod :
    FILE *q;
    FILE *w;
    FILE *e;
    a Ty próbujesz tam wcisnąć "plik", czyli char*.

  3. #3
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    32
    Posty
    1,710
    Siła reputacji
    14

    Domyślny

    @up
    nie to jest bledem.

    poszczególny element tablicy y[] zawiera znak, czyli char. Więc powinies go wrzucac:
    Kod :
    fprintf(plik,"%c\n",y[l]);
    a nie
    Kod :
    fprintf(plik,"%s\n",y[l]);

  4. Reklama
  5. #4
    Avatar Gray
    Data rejestracji
    2007
    Położenie
    Gdańsk
    Posty
    2,847
    Siła reputacji
    19

    Domyślny

    Cytuj Kusterek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    @up
    nie to jest bledem.

    poszczególny element tablicy y[] zawiera znak, czyli char. Więc powinies go wrzucac:
    Kod :
    fprintf(plik,"%c\n",y[l]);
    a nie
    Kod :
    fprintf(plik,"%s\n",y[l]);
    To inna sprawa, ale plik również jest błędem, bo fprintf bierze uchwyt na plik, a nie jego nazwę. Nie dość że się nie skompiluje, to i tak by źle zadziałało, jeśli potraktuje nazwę jako dostęp do pliku.

  6. #5
    Avatar Manufactury
    Data rejestracji
    2007
    Położenie
    Białystok
    Wiek
    31
    Posty
    230
    Siła reputacji
    18

    Domyślny

    Dzięki ludziska, durne błędy jak cholera... Ponad 7h programowania to jednak za dużo :D Kompilować kompiluje się, jednak jest jakiś błąd, bo program się zamyka, ale to już na jutro zostawię i rozgryzę, na dziś już starczy zabawy.

  7. #6
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    32
    Posty
    1,710
    Siła reputacji
    14

    Domyślny

    Cytuj Manufactury napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Dzięki ludziska, durne błędy jak cholera... Ponad 7h programowania to jednak za dużo :D Kompilować kompiluje się, jednak jest jakiś błąd, bo program się zamyka, ale to już na jutro zostawię i rozgryzę, na dziś już starczy zabawy.
    no jak sie zamyka to chodzi o błąd wskazany przez Gray'a :)

    jeszcze fscanf jest całkiem skopany i w jednym miejscu q zamiast w ;d - gray

    #edit
    no widze widze tylko generalnie kolega zadał konkretnie pytanie z fprintfem :P lepiej niech do samego sam po kolei dochodzi i zadaje kolejne pytania niż mamy mu cały kod od razu podpowiadać :)
    Ostatnio zmieniony przez Kusterek : 04-12-2013, 20:25

  8. Reklama
  9. #7
    Avatar Manufactury
    Data rejestracji
    2007
    Położenie
    Białystok
    Wiek
    31
    Posty
    230
    Siła reputacji
    18

    Domyślny

    Cytuj Kusterek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    no jak sie zamyka to chodzi o błąd wskazany przez Gray'a :)

    jeszcze fscanf jest całkiem skopany i w jednym miejscu q zamiast w ;d - gray

    #edit
    no widze widze tylko generalnie kolega zadał konkretnie pytanie z fprintfem :P lepiej niech do samego sam po kolei dochodzi i zadaje kolejne pytania niż mamy mu cały kod od razu podpowiadać :)
    Dokładnie tak, lepiej samemu dojść, nauczyć się niżeli prosić o gotowca :)

    edit: jakby kogoś interesowało, poprawione i zrobione w taki sposób: http://wklej.to/Nklbj
    Ostatnio zmieniony przez Manufactury : 05-12-2013, 15:16

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Błędy o plikach systemowych - logi OTL
    Przez Butek w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 5
    Ostatni post: 06-04-2014, 15:02
  2. [C++] Operacje na plikach
    Przez Jaziq w dziale Programowanie
    Odpowiedzi: 1
    Ostatni post: 10-11-2013, 23:40
  3. [Poradnik] [Seria Anty-Keylogger] 1. O plikach superukrytych
    Przez PomagamUsuwacWirusy w dziale Tibia
    Odpowiedzi: 4
    Ostatni post: 24-10-2009, 09:40

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •