prosim vas nevedeli by ste mi pomoct spravit program v C podla zadania lebo to musim odovzdat v skole a neviem co s tim:
Napísať program FILTER , ktory otvorí vstupný súbor, číta ho a prepisuje do výstupného súboru, pričom však vynecháva všetky c-čkové komentáre (t.j text medzi /*a*/ včitane zatvoriek)
- vstupný súbor (nanovo) vytvorí
- mená vstupného a výstupného súboru dostanete ako argument pri spustení z príkazového riadku
>filter vstup.txt vystup.txt
- pokiaľ nastane nejaká I/O chyba vypíše zmysluplné chybové hlásenie na obrazovku a skončí.
keby ste mi s tim vedeli poradit bol by som vam strasne vdacny.
Program FILTER v C
no v podstate to ze mi to precita z jedneho suboru a zapise do druheho ale nemam tam to aby mi to vynechavalo tie komentare
#include <stdio.h>
int main(void) {
char znak;
FILE* vstupnySubor = fopen("Cvic4_Priklad3.cpp","r"); FILE* vystupnySubor = fopen("vystupny_subor.txt","w");
if(vstupnySubor==NULL) {
printf("Vstupny subor sa nepodarilo otvorit!");
fclose(vstupnySubor); fclose(vystupnySubor);
return 0; }
while(EOF!=(znak=fgetc(vstupnySubor)))
{
fputc(znak,vystupnySubor); }
fclose(vstupnySubor); fclose(vystupnySubor);
return 0;
}
Tu mas mas tam aj naznacene to ako tam budes davat parametre s command linu dolad si to sam
//edit jop stale som si hovoril ze to moze mat 3 stavy a zabudol som ho nakoniec ten 3ti dat 
Kód: Vybrať všetko
#include <stdio.h>
int main(/*int argc, */char *argv[]) {
//if(argc==2) {
char znak,znak2;
int zapis=1,stav; // mod ci moze zapisovat 0=Nemoze, 1=OK,3=je to v pi*i
FILE* vstupnySubor = fopen("ss.txt","r");//fopen(argv[1],"r");
FILE* vystupnySubor = fopen("vystupik.txt","w");//fopen(argv[2],"w");
if(vstupnySubor==NULL) {
printf("Vstupny subor sa nepodarilo otvorit!");
}
else{
while(feof(vstupnySubor)==0)
{
stav=zapis;
znak=fgetc(vstupnySubor);
if (znak=='*' || znak == '/') {
stav=3;
znak2=fgetc(vstupnySubor);
if (znak2=='*') zapis=0;
if (znak2=='/') zapis=1;
}
if(zapis<=stav && zapis==1) {
fputc(znak,vystupnySubor);
if(stav==3) fputc(znak2,vystupnySubor);
stav=1;
}
if (zapis>stav) {
znak=fgetc(vstupnySubor);
fputc(znak,vystupnySubor);
}
}
}
fclose(vstupnySubor);
fclose(vystupnySubor);
//}else printf("musis zadat 2 vstupne argumenty , \nv tvare \"nazov_programu.exe vstup.txt vystup.txt\"\n ");
system("PAUSE");
return 0;
}
c-ice
Mne to blbne ten tvoj skript. ak dam napr. vstup:
vysup je:
a mal by asi byt:
a neni to trosku neprehladne??
tomy72
Na aku chodis skolu? Ved je to par podmienok. Cecko som preletel si pred rokom takze nic si z neho uz nepamatam ale tak skus:
Premenna b je tam len tak lebo si nepamatm ako sa do premennej dava prazdna hodnota 
Mne to blbne ten tvoj skript. ak dam napr. vstup:
Kód: Vybrať všetko
AHoj a/ko sa m*as? Ja sa mam /* celkom dobre */ a ty?Kód: Vybrať všetko
AHoj a/o sa m*s? Ja sa mam a ty?Kód: Vybrať všetko
AHoj a/ko sa m*as? Ja sa mam a ty?
tomy72
Na aku chodis skolu? Ved je to par podmienok. Cecko som preletel si pred rokom takze nic si z neho uz nepamatam ale tak skus:
Kód: Vybrať všetko
#include <stdio.h>
main(){
FILE *fr, *fw;
char c;
char b;
char memory;
int komentar = 0;
fr = fopen("vstup.txt", "r");
fw = fopen("vystup.txt", "w");
while ((c = getc(fr)) != EOF){
if(komentar == 1){
if(memory == '*' && c == '/'){
komentar = 0;
c = b;
}
}
if(komentar == 0){
if(c == '/') {
memory = c;
continue;
}
if(memory == '/' && !(c == '*')){
putc('/', fw);
}
if(memory == '/' && c == '*'){
komentar = 1;
}
if(komentar == 0){
putc(c, fw);
}
}
memory = c;
}
close(fr);
close(fw);
return 0;
}