Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
Autor | Správa |
---|
Registrovaný: 18.09.07 Prihlásený: 21.11.08 Príspevky: 6 Témy: 3 | 3 |
zdravim, poprosil by som o radu, mam takyto problem (vlastne su dva):
1) potrebujem v c/c++ dosiahnut, aby program cakal na vstup od uzivatela. totiz prebehne isty proces (praca so suborom) a na konci mam vypis, ci sa proces podaril, alebo nie. kedze vsak je to posledny prikaz suboru, tento text sa vypise ale hned sa okno zavrie, takze ho prakticky nebolo vidiet. potreboval by som nieco ako bolo readkey v pascale, teda ze program vypise tento text, potom bude cakat na stlacenie akejkolvek klavesy a az potom sa skonci. podla moznosti by som uvital co najjednoduchsi postup, som viac-menej zaciatocnik.
2) druha otazka sa tyka priamo tejto prace so suborom. prechadzam subor znak po znaku (cez getc), znaky porovnavam, mam tam nejaky switch atd a potom tieto znaky (respektive nejake zmenene, na zaklade vyhodnotenia cez switch) vkladam do druheho suboru (cez putc). teda je to kopia suboru, ale s tym ze iste konkretne znaky sa nahradia inymi. funguje mi to tak ako ma, ale na konci vystupneho suboru urobi vzdy este jeden znak navyse, je to znak "˙" (bez uvodzoviek, samozrejme. vyzera to ako samostatna bodka, ktora sa inak dava nad pismena). najradsej by som bol aby mi ju tam nedavalo vobec, ale na to neviem prist, preco ju tam dava, tak by som to chcel aspon obabrat takym sposobom, ze by po prebehnuti celeho procesu este spravilo taku vec, ze jednoducho odseknut posledny znak suboru prec. da sa to nejako jednoducho spravit?
dakujem
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 | 3 |
1) skus system("pause"); alebo getch();
2) vyskusaj poslat zdrojovy kod.
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 18.09.07 Prihlásený: 21.11.08 Príspevky: 6 Témy: 3 | 3 |
1) ked som si dal do googlu system("pause"), prve kde mi to naslo bol clanok "Things to avoid in C/C++", tak som si povedal ze toto nebudem pouzivat
getch() aj getchar() som uz skusal a nefungovali, ale napadla ma druha vec, vyskusat dat 2x po sebe getchar(). skusil som, a ide to netusim preco ten prvy este nezareaguje (ako keby mal este z predchadzajuceho kroku nejaky znak, ktory hned nacita a tym padom prejde dalej...) ale hlavne ze to funguje ako chcem. caka na stlacenie klavesy.
2) tu je kod:
Kód: #include <stdio.h>
void main(){ char nazov[255]; char saveto[255]; printf("Zadaj nazov vstupneho suboru.\n"); scanf("%s", &nazov); FILE *fr, *fw; fr=fopen(nazov,"r"); if (!fr){ printf("Nepodarilo sa otvorit subor \"%s\".\n", nazov); } else { printf("Zadaj nazov vystupneho suboru.\n"); scanf("%s", &saveto); fw=fopen(saveto,"w"); char c; while (!feof(fr)){ c=getc(fr); switch (c){ case '/*nejaky char*/': putc('/*nejaky iny char*/', fw); break; /*vela takychto case-ov, na kazdy zo znakov ktore kontrolujem*/ default: putc(c, fw); break; } } printf("Hotovo.\n"); fclose(fr); fclose(fw); } getchar(); getchar(); }
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 | 3 |
Nepouzi funkciu feof(), ale makro EOF. A funkcia main() musi vraciat premennu typu int.
Kód: #include <stdio.h>
int main(){ char nazov[255]; char saveto[255]; printf("Zadaj nazov vstupneho suboru.\n"); scanf("%s", &nazov); FILE *fr, *fw; fr=fopen(nazov,"r"); if (!fr){ printf("Nepodarilo sa otvorit subor \"%s\".\n", nazov); } else { printf("Zadaj nazov vystupneho suboru.\n"); scanf("%s", &saveto); fw=fopen(saveto,"w"); char c; while ((c=getc(fr))!=EOF){ switch (c){ case '/*nejaky char*/': putc('/*nejaky iny char*/', fw); break; /*vela takychto case-ov, na kazdy zo znakov ktore kontrolujem*/ default: putc(c, fw); break; } } printf("Hotovo.\n"); fclose(fr); fclose(fw); } getchar(); getchar(); }
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 18.09.07 Prihlásený: 21.11.08 Príspevky: 6 Témy: 3 | 3 |
vdaka, uz to funguje, teda uz tam nedava ten znak na konci.
este sa spytam: preco by mala funkcia main vracat integer? nemozem ju mat ako void? ved to funguje aj tak. alebo je to nejaka dogma, ze tak to musi byt a hotovo? (aj v skole nas ucili ze main moze vracat but integer, alebo void, alebo aj char ked chceme, ze je to jedno, skratka cokolvek - jedina podmienka aby to cez return vracalo taky typ ako je pred nazvom funkcie napisany)
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Je to ANSI štandard pre C++ (správne dokončený program má vrátiť celočíselnú hodnotu 0), v C je to tuším jedno.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
|