Skocz do zawartości
MeHow

C Problem z dynamiczna alokacja tablicy pod dany ciag liter

Rekomendowane odpowiedzi

DOTYCZY JEZYKA C

 

Moj problem jest taki: chcialbym dynamicznie alokowac tablice pod wczesniej wpisany ciag znakow. Np. wpisuje "Tweak" i chcialbym, aby dla niego zostala dopasowana tablica dokladnie 6 elementowa, gdyz wliczam na koncu '\0' . Wiem, ze nalezy uzyc malloca, jednak moj problem pojawia sie w momencie jak zrobic cos takiego, zeby malloc dostal informacje ile ma miejsca zarezerwowac, skoro nie wpisalem jeszcze ciagu znakow. Probowalem tez z sizeof(); ale jak zrobic, zeby sizeof pobral wiadomosc ile ma bajtow zarezerwowac, skoro zeby mogl to zrobic to musze mu podac jakas tablice znakow, a taka wlasnie chce otrzymac przy uzyciu malloca. Strasznie tu namieszalem, ale wiem ze lotni w C programisci domysla sie o co mi chodza i pomoga :) .

 

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

musisz sobie zrobic statyczny bufor, na przyklad na 255 znakow, i przyjmowac na wejsciu maksymalnie 255 znakow, i potem sobie allokowac tyle ile trzeba, inaczej sie nie da

 

edit:

to znaczy da sie, ale to niepotrzebne rzezbienie w "gownie", a na projekty na PW to co napisalem w zupelnosci wystarczy, nikt sie nie bedzie czepial

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

yasin, czyli myslisz, ze globalna tablica 255 znakow powinna byc odpowiednia? Pakowac tam kazda zapisana informacje, potem kopiowac przez strcmp do malloca i czyscic tablice globalna przed ponownym wywolaniem?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dokladnie tak, jest to powszechnie stosowane rozwiazanie na tego typu problem w C, te 255 znakow to tylko taki przyklad, zelezy oczywiscie o jaki input prosisz usera, bo jezeli ma to byc edytor tekstu to ja bym zrobil bufor, ktory moglby pomiescic cala strone tekstu, i po zapisaniu strony allokowal dynamicznie pamiec, kopiowal, czyscil bufor i umozliwil uzytkownikowi wstukanie nastepnej strony tekstu

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Podepne sie pod temat, bo mialem identyczny problem. Ja sie wycwanilem, i przykantowalem, korzystajac z C++ ;]

[php:1:114ee75010]

#include <iostream>

#include <stdio.h>

using namespace std;

 

int main(void)

{

string dany_string;

char *string_zaalokowany;

 

printf("Pokaz stringa ;]: ");

cin >> dany_string;

string_zaalokowany = (char *)malloc(strlen(dany_string.c_str())*sizeof(char));

strncpy(string_zaalokowany, dany_string.c_str(), strlen(dany_string.c_str()));

}

[/php:1:114ee75010]

Niemniej klasa string jakos sama to robi. Gdyby ktos mogl mi podac jakies linki, gdzie jest wyjasniony problem, to bylbym zobowiazany.

 

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...