W czym konkretnie problem? Użyj zatem if-a i w nim otwieraj plik albo do nadpisywania w
(tak jak robisz to teraz), albo do dopisywania a
.
Swoją drogą, nie bardzo rozumiem, po co Ci trzy pliki w tym wszystkim…
A, jeszcze taka drobna uwaga: prawdopodobnie chcesz bufor będący wielokrotnością 4096 bajtów, bo taki jest rozmiar sektora współczesnych dysków (powiedział Althorion, który ma wciąż w komputerze dwa 512 bajtowe dyski…).
Dokładnie chodzi mi o to, że ten program dopisujący treść 1 pliku do drugiego dobrze działa, tylko gdy chcę go rozwinąć o możliwość wyboru czy ma dopisywać, czy nadpisywać plik to nie chce mi to działać.
Tutaj jest działający plik, który dopisuje treść z pierwszego pliku do treści drugiego:
#include<stdio.h>
void main()
{
FILE *plik1, *plik2, *plik3;
char nazwa[1000], tresc[1000], buff[1000];
int i,j;
printf("Wprowadz nazwe pierwszego pliku: ");
gets(nazwa);
plik1 = fopen(nazwa, "w");
printf("Wprowadz tresc pierwszego pliku: ");
gets(tresc);
fprintf(plik1, "%s", tresc);
fclose(plik1);
plik2 = fopen(nazwa, "r");
plik3 = fopen("kopia.txt", "w");
fprintf(plik3, "To jest tresc drugiego pliku\n wraz z dopisana trescia z pierwszego pliku: ");
while (fgets(buff, 1000, plik2) != NULL)
fprintf(plik3, "%s", buff);
fclose(plik2);
fclose(plik3);
printf("Tresc drugiego pliku: ");
plik3 = fopen("kopia.txt", "r");
while (fgets(tresc, 1000, plik3) != NULL)
{
printf("%s", tresc);
}
printf("\n");
fclose(plik3);
}
A tu ten bardziej rozwinięty ale niedziałający program:
#include<stdio.h>
void main()
{
FILE *plik1, *plik2, *plik3;
char nazwa[1000], tresc[1000], buff[1000];
int i,j;
printf("Chcesz dopisac tresc do pliku- wybierz 1\nChcesz nadpisac tresc pliku- wybierz cokolwiek innego:\n");
int wybor;
scanf("%d", wybor);
if (wybor == 1)
{
printf("Wprowadz nazwe pierwszego pliku: ");
gets(nazwa);
plik1 = fopen(nazwa, "w");
printf("Wprowadz tresc pierwszego pliku: ");
gets(tresc);
fprintf(plik1, "%s", tresc);
fclose(plik1);
plik2 = fopen(nazwa, "r");
plik3 = fopen("kopia.txt", "w");
fprintf(plik3, "To jest tresc drugiego pliku\n wraz z trescia z pierwszego pliku: ");
while (fgets(buff, 1000, plik2) != NULL)
fprintf(plik3, "%s", buff);
fclose(plik2);
fclose(plik3);
printf("Tresc drugiego pliku: ");
plik3 = fopen("kopia.txt", "r");
while (fgets(tresc, 1000, plik3) != NULL)
{
printf("%s", tresc);
}
printf("\n");
fclose(plik3);
}
else
{
printf("Wprowadz nazwe pierwszego pliku: ");
gets(nazwa);
plik1 = fopen(nazwa, "w");
printf("Wprowadz tresc pierwszego pliku: ");
gets(tresc);
fprintf(plik1, "%s", tresc);
fclose(plik1);
plik2 = fopen(nazwa, "r");
plik3 = fopen("kopia.txt", "a");
fprintf(plik3, "To jest tresc drugiego pliku\n wraz z trescia z pierwszego pliku: ");
while (fgets(buff, 1000, plik2) != NULL)
fprintf(plik3, "%s", buff);
fclose(plik2);
fclose(plik3);
printf("Tresc drugiego pliku: ");
plik3 = fopen("kopia.txt", "r");
while (fgets(tresc, 1000, plik3) != NULL)
{
printf("%s", tresc);
}
printf("\n");
fclose(plik3);
}
}