Kopiowanie i edycja pliku

0

Witam wszystkich użytkowników.
Na wstępie zaznaczam ze jestem w tym zielony i przed studiami nie miałem styczności z żadnym językiem programowania.
Mam pewien problem a mianowicie muszę napisać program w C który pobiera zawartość z istniejacego pliku i tworzy dwa nowe pliki w jednym zapisując wyłącznie duże litery a w drugim tekst bez spacji.
Próbuje napisać to od 2 godzin bez skutku, nie wiem dlaczego nie działa warunek i zapisują mi się puste pliki.
Czy mógłby ktoś poprawić to co napisałem i wytłumaczyć co robię zle?
Pozdrawiam

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
FILE *f1,*f2;
int i=0;
char zn;
char tekst[50];
if((f1=fopen("plik.c","r"))==NULL)
{
printf("Nie otwarto pliku\n");
return 1;
}
else
while((zn=getc(f1))!=EOF)
{
putchar(zn);
}
if((f2=fopen("duzelitery.c","w"))==NULL)
{
printf("Nie otwarto 2 pliku\n");
return 1;
}
while((zn=getc(f1))!=EOF)
{
if(zn>='A'&&zn<='Z')
fprintf(f2,"%s",zn);

}
fclose(f1);
fclose(f2);
system("pause");
return 0;
}
 

PS: Jaki warunek muszę dać w petli czy if-ie żeby nie wyświetlało spacji?

1
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
FILE *f1,*f2,*f3;
char zn;
if((f1=fopen("plik.c","r"))==NULL)
{
printf("Nie otwarto pliku\n");
return 1;
}

if((f2=fopen("duzelitery.c","w"))==NULL)
{
printf("Nie otwarto 2 pliku\n");
return 1;
}

if((f3=fopen("bezspacji.c","w"))==NULL)
{
printf("Nie otwarto 3 pliku\n");
return 1;
}

while((zn=getc(f1))!=EOF)
{
if(zn>='A'&&zn<='Z')
fprintf(f2,"%c",zn);

if (zn != 32 )  //32 to kod ascii Spacji:)
fprintf(f3,"%c",zn);  //tutaj dalbym zapis jako char a nie string caly :)

 
}
fclose(f1);
fclose(f2);
fclose(f3);
system("pause");
return 0;
}
 
1

Nie wpisuje nic do pliku bo już nic nie wczytuje się z pierwszego, doszedłeś do końca pliku w poprzedniej pętli:

while((zn=getc(f1))!=EOF) 
  {
   putchar(zn);
  }

spacja to też znak:

if(zn!=' ')
0

o rzesz:P teraz działa:) dzięki wielkie za pomoc:)

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