MeHow Opublikowano 23 Grudnia 2004 Zgłoś Opublikowano 23 Grudnia 2004 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
KrzychuG Opublikowano 23 Grudnia 2004 Zgłoś Opublikowano 23 Grudnia 2004 malloc(strlen("tekst") + 1); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 23 Grudnia 2004 Zgłoś Opublikowano 23 Grudnia 2004 malloc(strlen("tekst") + 1);tak, to wiem, ale ja chce, zeby to uzytkownik przez stdin podawal tekst :] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
yasin Opublikowano 23 Grudnia 2004 Zgłoś Opublikowano 23 Grudnia 2004 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 23 Grudnia 2004 Zgłoś Opublikowano 23 Grudnia 2004 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? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
yasin Opublikowano 23 Grudnia 2004 Zgłoś Opublikowano 23 Grudnia 2004 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ajgon Opublikowano 30 Grudnia 2004 Zgłoś Opublikowano 30 Grudnia 2004 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...