• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmienna do tekstu

0 głosów
68 wizyt
pytanie zadane 11 października w C i C++ przez ola123 Nowicjusz (160 p.)

Witam, mam na studiach napisać program wyświetlający dowolny tekst wprowadzony przez użytkownika z klawiatury (język C). Problem w tym, że jestem dopiero po pierwszych zajęciach i wszystkiego zaczynam się uczyć. Do tej pory pisaliśmy tylko programy pobierające zmienne liczbowe i nie wiem jak wprowadzić zmienną tekstową. Próbowałam w poniższy sposób, ale program wyświetla tylko pierwsze wprowadzone słowo. Jak powinien wyglądać kod, żeby wszystko działało poprawnie?

+ czy wpisywanie rozmiaru tablicy jest konieczne? Zostawianie pustego nawiasu kwadratowego powoduje wyświetlanie błędu, ale czy muszę koniecznie wprowadzać liczbę znaków, czy da się to jakoś ominąć?

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

int main (void)
{
    char tekst[100];
    printf("Wpisz tekst: ");
    scanf ("%s", tekst);
    printf(tekst);


    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 11 października przez PanRik Gaduła (3,170 p.)
edycja 11 października przez PanRik

Do ciągów znaków nie stosuj scanf, tylko gets fgets.
Scanf kończy wczytywanie do zmiennej , wtedy kiedy wykryje spacje lub znak nowej linii lub EOF.
 

#include <stdio.h>
#include <stdlib.h>
 
int main (void)
{
    char tekst[100];
    printf("Wpisz tekst: ");
    fgets(tekst, sizeof(tekst), stdin);
    printf(tekst);
 
 
    return 0;
}

Rozmiar tablicy musi być znany w trakcie kompilacji, chyba, że zastosujesz alokowanie dynamiczne, ale to chyba jeszcze się dowiesz na zajęciach :)

Edit: fgets jest dużo bezpieczniejszy, ponieważ zabezpiecza Cię to przed przepełnieniem stosu :)

komentarz 12 października przez j23 Maniak (74,360 p.)
edycja 12 października przez j23

Rozmiar tablicy musi być znany w trakcie kompilacji,

W C99 VLA są dozwolone (C11 mogą, ale nie muszą być).

 

ponieważ zabezpiecza Cię to przed przepełnieniem stosu :)

Raczej page-faultem, ewentualnie zniszczeniem ramek stosu.

Podobne pytania

+1 głos
2 odpowiedzi 345 wizyt
0 głosów
2 odpowiedzi 231 wizyt
pytanie zadane 9 listopada 2016 w JavaScript, jQuery, AJAX przez WojciechJot Gaduła (3,410 p.)
0 głosów
4 odpowiedzi 252 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

56,369 zapytań

101,066 odpowiedzi

208,200 komentarzy

28,039 pasjonatów

Przeglądających: 324
Pasjonatów: 12 Gości: 312

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...