Avatar
Head
Člen
Avatar
Head:

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):

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:

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):

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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 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.