• 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
69 wizyt
pytanie zadane 11 października w C i C++ przez ola123 Nowicjusz (180 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 Szeryf (75,100 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 346 wizyt
0 głosów
2 odpowiedzi 232 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
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

56,493 zapytań

101,200 odpowiedzi

208,601 komentarzy

28,161 pasjonatów

Przeglądających: 221
Pasjonatów: 5 Gości: 216

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.

...