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

wczytywanie napisu w dynamicznej tablicy

Object Storage Arubacloud
0 głosów
776 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez Don Corleone Obywatel (1,210 p.)

Witam, chciałbym aby uzytkownik wczytal slowo z klawiatury a nastepnie zeby zostalo wyswietlone w konsoli, chce aby kompilator zarezerwowal tyle pamieci ile jest potrzebne do danego slowa, doszedlem do pewnego momentu i nie wiem co dalej bo według mnie powinno hulać, ale ze programuje dosyc krotko to prosze was o pomoc :)

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

int main()
{
    char *napis;
    gets(napis);
    napis=(char*)malloc(strlen(napis)*sizeof(char));
    printf("%s", napis);
    free(napis);
    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 24 stycznia 2017 przez draghan VIP (106,230 p.)

Żeby cokolwiek zapisać w pamięci, musisz mieć tę pamięć najpierw zarezerwowaną dla swojego użytku. W poniższym kodzie łamiesz tę zasadę:

    char *napis;
    gets(napis);

Zapis char *napis tworzy jedynie wskaźnik na znak - żeby coś przypisać pod adres wskazywany przez napis, musisz dokonać alokacji pamięci.

Wybierając funkcję gets() do wczytania łańcucha, praktycznie pozbawiasz się kontroli nad długością pobranego łańcucha. Już chyba lepszym rozwiązaniem byłoby utworzenie na początek jakiejś małej tablicy i wczytywanie łańcucha znak po znaku, a w razie przepełnienia bufora - realokacja tablicy na większą.

komentarz 24 stycznia 2017 przez Don Corleone Obywatel (1,210 p.)
czyli jedynym rozwiazaniem mojego problemu jest wczytanie lancucha znak po znaku w petli?
komentarz 24 stycznia 2017 przez draghan VIP (106,230 p.)

Nie jest to jedyne rozwiązanie, a tylko pierwsze lepsze, które wpadło mi do głowy. ;)

Możesz np. posłużyć się funkcją fgets.

Podobne pytania

0 głosów
1 odpowiedź 2,441 wizyt
0 głosów
0 odpowiedzi 210 wizyt
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 13 lutego 2018 w C i C++ przez Dudekdude Początkujący (320 p.)

92,567 zapytań

141,420 odpowiedzi

319,615 komentarzy

61,952 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...