Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: string + subot

Aktivity
Avatar
Head
Člen
Avatar
Head:21.1.2015 20:00

program načíta niekoľko viet(každa na samostatny riadok) a uloži ich do súboru vety.txt ... zadavanie je ukončené zadanim KONIEC SUBORU pričom tento riadok sa v súbore nenachádza... skušal som to cez fprintf + while loop ... nevedel by mi niekto poradiť?

 
Odpovědět
21.1.2015 20:00
Avatar
Odpovídá na Head
Libor Šimo (libcosenior):22.1.2015 13:46

V čistom c by to mohlo byť napr. takto:

#include <stdio.h>
#include <string.h>

int main(void)
{
    FILE *fw;
    char buffer[101], veta[10000];

    if ((fw = fopen("vety.txt", "w")) == NULL) {
                printf("Subor sa nepodarilo otvorit.\n");
                return 1;
            }
    while (1) {
        printf("Zadajte vetu na vlozenie do suboru: ");
        scanf(" %100[^\n]", buffer);
        if (strstr(buffer, "KONIEC SUBORU") == 0) {
            strcat(veta, buffer);
            strcat(veta, "\n");
        }
        else
            break;
    }
    fprintf(fw, "%s", veta);
    if (fclose(fw) == EOF) {
        printf("Subor sa nepodarilo zavriet.\n");
        return 1;
    }

    return 0;
}
Nahoru Odpovědět
22.1.2015 13:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Head
Člen
Avatar
Head:27.1.2015 18:45

ja som to nakoniec vyriesil takto ....chcel by som sa spýtať na prikazy gets a fputs.. či je na nich niečo zle lebo niekde som čítal že neodporučaju ich pouzivať. a tiež som niekde čital že je lepšie použivat na infinite loop for ako while ...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char buffer[1024];
    FILE *subor = fopen("vety.txt", "w");
    for (;;)
    {
    printf("Zadaj vetu.Pre ukoncenie zadaj KONIEC SUBORU \n");
    gets(buffer);
    if (strstr(buffer,"KONIEC SUBORU")!=0)
    break;
    fputs(buffer,subor);
    fputs("\n",subor);
    }

    fclose(subor);
    return 0;
}
 
Nahoru Odpovědět
27.1.2015 18:45
Avatar
Odpovídá na Head
Libor Šimo (libcosenior):28.1.2015 8:15

fputs() sa dá použiť iba s reťazcami.
fprintf() má celý rad formátovacích zariadení pre niekoľko typov dát
Citácia z stackoverflow.com:
Uhm... ...puts() just writes a string, while printf() has a number of formatting facilities for several types of data.

fputs() http://www.cplusplus.com/…stdio/fputs/

fprintf() http://www.cplusplus.com/…dio/fprintf/

Editováno 28.1.2015 8:19
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
28.1.2015 8:15
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.