ABA


"c++| איך אני עושה malloc לדבר הבא?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10654 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10654
zero_cool

   21:10   12.04.12   
אל הפורום  
  c++| איך אני עושה malloc לדבר הבא?  
 
   ברמת העיקרון יש לי את הקונסטרקטור הבא שמכניסים לו מחרוזת של אותיות


StringTokenizer::StringTokenizer(char* str)
{
cout<<"enter str1 : ";
cin.getline(str1,sizeof(str1));
cout<<endl<<endl;
}


איך אני עושה לו malloc ואיפה?
תודה רבה וחג שמח


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  למה שפשוט לא תעתיק את המחרוזת עם פונקציות של STRING? TheKid 12.04.12 23:04 1
     הלוואי ויכלתי לעשות ככה אבל אני צריך להגדיר אותו כchar zero_cool 12.04.12 23:12 2
         יש לך בstring גם casting לchar* הפונקציה היא c_str TheKid 12.04.12 23:16 3
             אני עדין מעדיף לעשות ככה בשביל שלא ירד לי נקודות בעבודה zero_cool 12.04.12 23:41 4
  תקן אותי אם לא הבנתי נכון, אבל אתה רוצה לקלוט איציק2 13.04.12 03:24 5
     לא אחי כנס.. zero_cool 13.04.12 11:03 6
         לא ממש קראתי את הקוד Sn00py  13.04.12 11:55 7

       
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק
   23:04   12.04.12   
אל הפורום  
  1. למה שפשוט לא תעתיק את המחרוזת עם פונקציות של STRING?  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 12.04.12 בשעה 23:10 בברכה, TheKid
 
ולא כל כך ברור לי.. גם אתה מקבל מחרוזת מהמשתמש וגם מבקש מחרוזת מהקלט?

והכוונה שלי במשפט הראשון היא לעשות משהו בסגנון הזה


string str1;
cout << "enter str1: ";
getline (cin,str1);
cout << str1 << endl;


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
zero_cool

   23:12   12.04.12   
אל הפורום  
  2. הלוואי ויכלתי לעשות ככה אבל אני צריך להגדיר אותו כchar  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק
   23:16   12.04.12   
אל הפורום  
  3. יש לך בstring גם casting לchar* הפונקציה היא c_str  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
zero_cool

   23:41   12.04.12   
אל הפורום  
  4. אני עדין מעדיף לעשות ככה בשביל שלא ירד לי נקודות בעבודה  
בתגובה להודעה מספר 3
 
   תודה בכל זאת
מה שאני מחפש זה לעשות malloc לדבר הזה.. כי שאני פולט את המחרוזת הוא רושם לי זבל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   03:24   13.04.12   
אל הפורום  
  5. תקן אותי אם לא הבנתי נכון, אבל אתה רוצה לקלוט  
בתגובה להודעה מספר 0
 
   str1 שיהיה בגודל הstr שקיבלת מהמשתמש?
תגדיר אם כן

char * str1 = NULL;
str1 = (char*) malloc (sizeof(str) * (char));

ומיד אחרי זה אתה עושה strcpy על הstr לstr1..
זה מה שהתכוונת?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
zero_cool

   11:03   13.04.12   
אל הפורום  
  6. לא אחי כנס..  
בתגובה להודעה מספר 5
 
   יש לי str1 שהוא בגודל 80 מוגדר מההתחלה והוא מסוג char
אני נותן למשתמש להכניס בתוכה משפט


char str1;

cout<<"enter str1 : ";
cin.getline(str1,sizeof(str1));
cout<<endl<<endl;

ברמת העיקרון הוא קולט לי משפט , אבל שאני רושם את הקוד הבא :


char* StringTokenizer::NextToken()
{
int i=0,count=5,j=1,k=1;


char* p =(char*)malloc(count*sizeof(int));

p='1';


if(str1 > 'A' && str1 < 'z')
{
p='1';
for(i=0; str1 != '\0' ; i++)
{
if(str1 > 'A' && str1 < 'z')
{
p = str1;
j++;
}

if(str1 > 'A' && str1 < 'z' && (str1 == ' '))
{
p='1'+k;
j++;
k++;
}
}
}

i=j=0;
k=0;

if(str1 > 'A' && str1 < 'z' && (str1 == ' '))
{
for(i=0; str1 != '\0' ; i++)
{
if(str1 > 'A' && str1 < 'z')
{
p = str1;
j++;
}
if(str1 > 'A' && str1 < 'z' && (str1 == ' '))
{
p='1'+k;
j++;
k++;

}
}
}


return p;
}

הקוד לוקח את הרווחים או הכוכביות שיש בין מילים ומכניס במקומו מספרים ,
יוצא לי הקלט הבא :



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   11:55   13.04.12   
אל הפורום  
  7. לא ממש קראתי את הקוד  
בתגובה להודעה מספר 6
 
   אבל מהתמונה נראה שחסר לך NULL TERMINATOR (כלומר \0) בסוף הסטרינג שלך, ולכן cout מדפיס את כל הזבל שהוא רואה עד שהוא נעצר.

תבדוק למה דרסת לעצמך את ה \0.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net