Zapisovanie v C

Programovacie jazyky, rady, poradňa...
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Zapisovanie v C

Príspevok od používateľa maetoo »

Potrebujem aby program robil to, aby uživatela vyzval na zadanie hociakeho textu.
Po zadany textu, keď uzivatel stlači enter, aby sa dany text uložil so suboru.
Ako by ste to riešili?

Rozpisany kod:
int games_pridat() {

CleanConsole

FILE *game_keyFile;

game_keyFile=fopen("game_key_databaza.txt", "w");
fclose(game_keyFile);

return 0;
}
94jakub
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2037
Registrovaný: 15 dec 2006, 13:18
Bydlisko: Martin/BA
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa 94jakub »

Vypíšeš do konzoly text "Zadaj hocijaký text"
a potom načítaš vstup a vložíš ho do súboru(podľa potreby len aktuálny vstup alebo ho vždy pridáš na koniec súboru.
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: Zapisovanie v C

Príspevok od používateľa maetoo »

Nebudem zakladať novu tému, tak to sem napišem.
Mám zdrojovy kód, pomocou ktoreho zapisujem hociaky text do suboru.
Možem tam písať textu kolko chcem, až pokiaľ nestlačim pismeno X a enter.
To by bolo všetko poriadku, len s tym, že mi do suboru zapiše aj pismeno X, ako možete vidieť v prilohe.
Ako ošetriť, alebo prerobiť zdrojovy kod, aby sa pismeno X nezobrazovalo v textovom subore?

Zdrojak:

Kód: Vybrať všetko

int main()
{
    FILE *fa;
    char c;

    fa=fopen("subor.txt", "a");
    do {
        c=getchar();
        putc(c, fa);
        } while(c!='x');

    fclose(fa);

    return 0;
}
Prílohy
Zapisovanie do suboru - vynechanie pismena !X!.png
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa harrison314 »

Kód: Vybrať všetko

int main()
{
    FILE *fa;
    char c;

    fa=fopen("subor.txt", "a");
    for(;;) {
        c=getchar();
        if(c =='x') break;
        putc(c, fa);
        }

    fclose(fa);

    return 0;
}
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Zapisovanie v C

Príspevok od používateľa aacid »

miesto do-while pouzi iba while. podmienka sa bude kontrolovat na zaciatku cyklu, nie na konci, takze najprv zistis ci uzivatel nezadal X az potom zapises.
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: Zapisovanie v C

Príspevok od používateľa maetoo »

Potrebujem spraviť to, aby program zistil či je dany subor vytvoreny.
Ak nie je vytvoreny, aby ho vytvoril a do neho zapisal znaky z klavestnice a ak dany subor už existuje,
aby otvoril existujuci subor a v nom pokračoval zapis znakov z klavesnice.
Vymyslel som niečo taketo. Bude to fungovať? Ako sa to ma syntaxne spravne zapisať
Moj vytvor:

Kód: Vybrať všetko

    if(email_databaza.txt==email_databaza.txt) { //Podmienka, ak dany subor existuje otvorit ho a pokracovat zapise
        
      fa=fopen("email_databaza.txt", "a");  
    }
    
    if(email_databaza.txt!=email_databaza.txt) { //Podmienka, ak dany subor neexistuje, vztvorit ho a zacat do neho zapisovat
        
      fa=fopen("email_databaza.txt", "w");  
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Zapisovanie v C

Príspevok od používateľa aacid »

"a" subor vytvori ak neexistuje.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa harrison314 »

maetoo napísal:Potrebujem spraviť to, aby program zistil či je dany subor vytvoreny.
Ak nie je vytvoreny, aby ho vytvoril a do neho zapisal znaky z klavestnice a ak dany subor už existuje,
aby otvoril existujuci subor a v nom pokračoval zapis znakov z klavesnice.
Vymyslel som niečo taketo. Bude to fungovať? Ako sa to ma syntaxne spravne zapisať
Na zistenie exsitencie suboru staci pouzit fopen("subor.txt", "r") - ak vrati NULL, subor neexistuje.
No na tvoj pripad pouzi to, co ti napisal aacid
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa Fabo »

aacid napísal:miesto do-while pouzi iba while. podmienka sa bude kontrolovat na zaciatku cyklu, nie na konci, takze najprv zistis ci uzivatel nezadal X az potom zapises.
ee, toto fungovat nebude.

prvy cyklus > premenna c je prazdna alebo garbage, cyklus sa zacne (ak zhodou nahod nenatiahne garbage v hodnote 'x')
nacita pismeno, zapise ho.
druhy cyklus > kontroluje ci je pismeno 'x' ...

ako vidis, vysledok rovnaky.

co je potrebne, je urobit vyhodnotenie skor ako zapis, co je mozne bud vnorenim ifu ako pise harrison alebo napr. mozes urobit

Kód: Vybrať všetko

c=getchar();

while(c!='x')
{
     putc(c, fa);
     c=getchar();
} 
cim dosiahnes:

1. nacita sa prvy keystroke
2. vyhodnoti hodnotu, ak nie je 'x'
3. zapise prvy keystroke
4. nacita druhy keystroke
5. ak je 'x', skonci cyklus, ak nie je 'x' navrat do bodu 3
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Zapisovanie v C

Príspevok od používateľa aacid »

tak samozrejme nestaci iba zmenit do-while na while, bud to spravi ako ty pises alebo ak nechce opakovat "c=getchar()", tak nainicializujes c na prazdnu hodnotu a jednoducho v prvom cykle zapises prazdnu hodnotu.
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa Fabo »

uz ci pred cyklom urobi c=getchar alebo c='' je jedno.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa harrison314 »

Fabo napísal:uz ci pred cyklom urobi c=getchar alebo c='' je jedno.
Fabo prazdny charakter netsvuje.
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa Fabo »

OK, tak c=' ', to je jedno, ide o princip.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zapisovanie v C

Príspevok od používateľa harrison314 »

no v tom pripade mu tam vypise prazdny medzeru, co tiez nemusi byt OK
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Zapisovanie v C

Príspevok od používateľa aacid »

c = '\0';
Napísať odpoveď