Dopisywanie danych do pliku

0

Siemka. Z góry uprzedzam, że średnio rozumiem programowanie, ale przygotowuję się do kolokwium, które muszę zaliczyć. Profesor mówił nam żebyśmy na pewno nauczyli się dopisywania do pliku, więc zacząłem zabawę i mam następujący kod:

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

int main()
{
	FILE *fp;
	char Plik[100];
	int ilosc,i;
	int tab[100]={0};
	puts("Podaj sciezkie do pliku");
	gets(Plik);
	if((fp=fopen("Plik.txt", "ab"))==NULL)
	{
		puts("Blad otwarcia pliku");
		exit(1);
	}
	while(fscanf(fp,"%s",&Plik)!=EOF)
		printf("%s\n ", Plik);
	puts("Podaj ile cyfr ma zostac dopisanych do pliku");
	scanf("%d", &ilosc);
	for(i=0;i<ilosc;i++)
		tab[i]=i+1;
	fwrite(&tab,sizeof(tab),1,fp);
	puts("Liczby zostaly pomyslnie dopisane");
	fclose(fp);
	return 0;
}

Oczywiście program nie działa jak należy. Po dodaniu "ab" zaczął dopisywać do pliku jakieś dziwactwa natomiast po próbie dodania danych z drugiej tablicy nie dodaje niczego. Mógłby mnie ktoś nakierować na właściwą drogę, bo siedzę już nad tym trochę czasu i nie rozumiem? :P Z góry dzięki.

1

W tym momencie zapisujesz zawartość tab binarnie. Jeśli chcesz ją zapisać tekstowo to musisz użyć fprintf ;)

1

@Reebson: Musisz użyć pętli.

0
fprintf(fp,"\nLiczby dopisane do pliku to: %d ", tab);

wypisuje ci adres pierwszego elementu tablicy tab w pamięci

1

Tu masz program dopisujący liczby do pliku Plik.txt:

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

int main(void)
{
    FILE* file = fopen("Plik.txt", "a");

    if (!file) {
        printf("Blad otwarcia pliku");
        exit(1);
    }

    printf("Podaj ile liczb ma zostac dopisanych do pliku: ");
    int ilosc;
    scanf("%i", &ilosc);

    for (int i=0; i!=ilosc; ++i)
        fprintf(file, "%i ", i+1);

    printf("Liczby zostaly pomyslnie dopisane!\n");
    fclose(file);
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1