Znaková pole   zodpovězená otázka

C++/C

Dobrý den,

Napsal jsem jednoduchý prográmek v C, který ma za úkol uživatelem zadaný text zobrazit ještě jednou.

#include <stdio.h>

#define B 10
#define A 0

int main()
{
    do{
       char p[B];
    
       printf("\n");
       scanf("%c", &p);
       for (int i = 0; i <= B; ++i)
           printf("%c", p[i]);
       
       //vymazani pole    
       for (int i = 0; i <= B; p[i] = 0, ++i)
           ;    
    }while (!A);
     
    //vyprazdneni bufferu
    while (getchar() != '\n');
    getchar();
    return 0;
}

když napíšu třeba adam a stisknu enter vyhodí mi to tohle:

adam

a☺ ↑.H H

d

a

m

1) proč jsou písmena pod sebou, i když je v cyklu for jasně napsané že to má být vedle sebe.

2) proč tam jsou ty ostatní znaky

3) proč to dělá nepořádek s mezerami

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Nejsem tedy žádný céčkař, ale takto bych to řešil v C já.

Dá řešit mnohem jednodušeji:

#include <stdio.h>

int main()
{
	char charArray[20];

	printf("Zadejte text: ");
	scanf("%s", &charArray);

	printf("Opakuji text: %s", charArray);

	getchar();
	getchar();

	return 0;
}

Nezapomeňte, že f-ce getchar() zahazuje mezery! Tedy mezera zastavý načítání znaků.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No už jsem na to přišel. Když chci aby se nějaký znakový řetězec uložil do znakového pole použije se funkce gets().

Jinak díky za odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback