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 – Lekce 8 - Textové řetězce v jazyce C

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Honza Černoch:25.11.2019 19:30

kde jsem udelal chybu?

Odpovědět
25.11.2019 19:30
Podle někoho je nejrychlejší na světě myšlenka, podle druhého zase světlo. Já jsem však přišel na to, že to je průjem...
Avatar
Odpovídá na Honza Černoch
Honza Černoch:25.11.2019 20:26

chybu jsem uz nasel:

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

int main()
{
char text[100];
int pismena;
printf("Napis slovo a ja spocitam pocet pismen: \n");
scanf("%99s", text);
pismena = strlen(text);
printf("Slovo ma %d pismen.", pismena);

return 0;
}

Odpovědět
25.11.2019 20:26
Podle někoho je nejrychlejší na světě myšlenka, podle druhého zase světlo. Já jsem však přišel na to, že to je průjem...
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Honza Černoch
DarkCoder:25.11.2019 20:37

Slovo je skupina hlásek tvořící ustálený celek a mající určitý ustálený význam. Z programátorského hlediska se jedná o jednorozměrné pole znaků, někdy též nazývaný řetězec. Pro uložení slova je třeba deklarovat proměnnou jako pole znaků.

Např.

char text[50];

Tímto deklaruješ pole do kterého se vejde 50 znaků (v případě řetězce 49 plus '\0'). Pro čtení řetězců se používá funkce fgets(). Na výsledku bys pak prováděl některé úpravy. Když chceš použít funkci scanf(), je třeba si uvědomit, že načítání Ti ukončí bílý znak a nikoli tečka, čárka, vykřičník, otazník, apod. Pokud Ti stačí mezera, můžeš funkci scanf() použít. Při načítání řetězce se u funkce scanf() nepoužívá ampersand. Předává se adresa pole a tedy argumentem je jméno pole.

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

#define SIZE 50

int main(void) {
        char text[SIZE];

        scanf("%s", text);
        printf("%d\n", strlen(text));

        return 0;
}
Odpovědět
25.11.2019 20:37
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Martin Russin:2.8.2021 13:58

Ahoj, chcel by som Ťa prosím opýtať na používanie funkcií gets() a fgets(). Z toho čo si napísal viem, že funkcia gets() je už zastaralá a bola nahradená funkciou fgets().

Nasledujúci kód sa mi neskompiluje a pri funkcii fgets() sa vypíše nasledujúca chyba: too few arguments to function 'fgets'. V čom je chyba?

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

int main(int argc, char** argv) {
    char buffer[256];
    fgets(buffer);
    puts(buffer);
    return (EXIT_SUCCESS);
}

Ten istý kód s použitím funkcie gets() sa mi skompiloval - fungoval ako mal, avšak pri funkcii gets() sa mi vypísala iná chyba.

Vopred Ti ďakujem za odpoveď.

 
Odpovědět
2.8.2021 13:58
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Martin Russin
DarkCoder:2.8.2021 15:04

Chybová hláška jasně říká, že voláš funkci fgets() s nesprávným počtem parametrů. Funkce fgets() má parametry tři, nikoli jeden.

Podívej se na její popis:
Popis funkce fgets()

Odpovědět
2.8.2021 15:04
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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 5 zpráv z 45.