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í.
Avatar
acerik97
Člen
Avatar
acerik97:25.2.2015 21:07

Jakou funkci bych měl použít, když mám v texťáku napsaná čísla 52 23 12 (nový řádek)
23 20 14 a chtěl bych je přečíst na konzoli?
Děkuji za odpověd

 
Odpovědět
25.2.2015 21:07
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na acerik97
Jan Vargovský:25.2.2015 21:12

funkce fscanf
class ifstream

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
25.2.2015 21:12
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):27.2.2015 9:49

Ako mám docieliť, aby sa mi vypisovalo aj odriadkovanie tak, ako je to to v subore?
cisla.txt
123 456 789
987 654 321

Tento kód vypíše všetko do jedného riadku:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *fr;
    int i;

    if ((fr = fopen("cisla.txt", "r")) == NULL) {
        printf("Subor sa neda otvorit!");
        exit(1);
    }
    while (fscanf(fr, "%d", &i) == 1){
        printf("%d, ", i);
    }
    if (fclose(fr) == EOF) {
        printf("Subor sa nepodarilo zavriet!");
        exit(1);
    }

    return 0;
}
Nahoru Odpovědět
27.2.2015 9:49
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):27.2.2015 10:19

Týmto to vypíše správne, ale vypisuje to znaky.

while ((c = getc(fr)) != EOF){
    putchar(c);
}
Nahoru Odpovědět
27.2.2015 10:19
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):27.2.2015 13:21

Nejak som to vyriešil, ale zdá sa mi zo trochu zložité. Program z textového súboru spočíta celé čísla oddelené medzerou v každom riadku zvlášť a zvlášť to aj vypíše. Napríklad súbor.txt:
25 14 56 98 74
25 69 4 5
22
1 2 3 4 5 6 7 8 9

vypíše
25 + 14 + 56 + 98 + 74 = 267
25 + 69 + 4 + 5 = 103
22 = 22
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(void)
{
    FILE *fr;
    int c, i = 0, cis, sucet = 0;
    char cislo[10];

    if ((fr = fopen("cisla.txt", "r")) == NULL) {
        printf("Subor sa neda otvorit!\n");
        exit(1);
    }
    while ((c = getc(fr)) != EOF){
        if (isdigit(c))
            cislo[i++] = c;
        else if (c == '\n' || c == EOF) {
            cislo[i] = '\0';
            cis = atoi(cislo);
            printf("%d + ", cis);
            sucet += cis;
            printf("\b\b= %d", sucet);
            putchar('\n');
            i = 0;
            sucet = 0;
        }
        else {
            cislo[i] = '\0';
            cis = atoi(cislo);
            printf("%d + ", cis);
            sucet += cis;
            i = 0;
        }
    }
    if (fclose(fr) == EOF) {
        printf("Subor sa nepodarilo zavriet!\n");
        exit(1);
    }

    return 0;
}
Nahoru Odpovědět
27.2.2015 13:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
acerik97
Člen
Avatar
acerik97:27.2.2015 14:10

Šlo by to i tímto zpusobem pokud vis predem kolik cisel mas na kazdem radku

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE * soubor;
    int a,b,c,d;

    soubor = fopen("text.txt","r");

       if(soubor == NULL)
       {
                 printf("Nastala chyba");
       }

    while(!(d=feof(soubor)))
    {
      fscanf(soubor,"%d %d %d\n",&a,&b,&c);

      printf("%d %d %d\n",a,b,c);
    }

    fclose(soubor);

    getch();
    return 0;

}
 
Nahoru Odpovědět
27.2.2015 14:10
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:27.2.2015 14:43

Načíst řádek, ten si hodit do stringstreamu a z něj pak načítat. Musel bys ale speciálně načítat, pokud bys chtěl i přesný počet mezer mezi čísly.

 
Nahoru Odpovědět
27.2.2015 14:43
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):28.2.2015 12:39

Máš pravdu, bolo by to jednoduchšie.

Nahoru Odpovědět
28.2.2015 12:39
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 8 zpráv z 8.