לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 26-01-2006, 22:22
  ASHVAK ASHVAK אינו מחובר  
 
חבר מתאריך: 16.06.03
הודעות: 247
שאלה C++| פונקציה מסוג char לא מצליחה להחזיר לי מערך של charים...

C++| פונקציה מסוג char לא מצליחה להחזיר לי מערך של charים...

קוד:
char readln(){ char tmp[255]=""; char tmpKey[1]; int i=0; do{ tmpKey[0]=getchar(); tmp[i]=tmpKey[0]; i++; }while(!(int(tmpKey[0])==10)); tmp[i]='\0'; return tmp; }


הודעת השגיעה:
ציטוט:
error C2440: 'return' : cannot convert from 'char [255]' to 'char'

וזה מצביע על השורה של return tmp.

נסיתי לחשוב על הכל ולא הולך לי...
חשבתי להחזיר פויינטר אבל המשתנים בתוך הפונקציה הם מקומיים.
חשבתי אולי אפשר אייכשו לגרום לפונקציה להחזיר גם [255] אבל זה לא עובד.

אני חושב שזה צריך להיות משהו עם buffer... אבל אין לי מושג איך ליישם את זה..

אולי יש לזה קשר לזיכרון דינמי.. אבל עוד לא הגעתי לפרק הזה...
---
ד"א, מדריך טוב לC++:
http://www.cplusplus.com/doc/tutorial/
נראה לי שיש לו אפילו קישור פה בנעוץ.
_____________________________________
~-LiViDuS-~

...Previous knowen as AshvaK...


נערך לאחרונה ע"י ASHVAK בתאריך 26-01-2006 בשעה 22:29.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 26-01-2006, 23:35
  ASHVAK ASHVAK אינו מחובר  
 
חבר מתאריך: 16.06.03
הודעות: 247
בתגובה להודעה מספר 1 שנכתבה על ידי ASHVAK שמתחילה ב "C++| פונקציה מסוג char לא מצליחה להחזיר לי מערך של charים..."

הגעתי לפרק של הזיכרון הדינמי והגעתי למן פיתרון שלכאורה נראה הגיוני (אולי קצת מסורבל).... אבל מסתבר שגם הוא לא עובד... אני לא מבין למה:

קוד:
void readln(char *arr){ char tmp[255]; char tmpKey[1]; int i=0; do{ tmpKey[0]=getchar(); tmp[i]=tmpKey[0]; i++; }while(!(int(tmpKey[0])==10)); *arr=new char[i]; for(int i2=0;i2<i;i2++){ *arr[i2]=tmp[i2]; } *arr[i2]='\0'; }


הקריאה לפונקציה:
קוד:
char *arr; readln(arr);


השגיאה:
ציטוט:
error C2440: '=' : cannot convert from 'char *' to 'char'
כשזה מצביע על
*arr=new char[i];

הרעיון הוא ליצור פויינטר, להעביר אותו ע"י ריפירנס (כלומר את הפויינטר שלו) לפונקציה (ככה שהשינויים ייעברו יישירות לתא בזיכרון. ובפונקציה ליצור תאים חדשים... לי זה נראה כאילו אמור לעבוד אבל הקומפיילר חושב אחרת..
_____________________________________
~-LiViDuS-~

...Previous knowen as AshvaK...

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 27-01-2006, 13:09
צלמית המשתמש של fat fish
  fat fish fat fish אינו מחובר  
 
חבר מתאריך: 20.06.03
הודעות: 5,616
מה לא ברור?
בתגובה להודעה מספר 1 שנכתבה על ידי ASHVAK שמתחילה ב "C++| פונקציה מסוג char לא מצליחה להחזיר לי מערך של charים..."

השגיאה היא יותר מברורה:
קוד:
error C2440: 'return' : cannot convert from 'char [255]' to 'char'


הפונקציה מוגדרת להחזיר ערך מסוג char, או "תו" בודד (ערך מספרי בין 0 ל-255).
אתה מנסה להחזיר מערך של char ולא תו בודד, על מנת להחזיר מערך של char
כמובן שישנן פונקציות שמחזירות מצביע, אך אתה לא זקוק לזה במקרה זה.

כאשר אנו רוצים שפונקציה "תחזיר" לנו מערך, יותר פשוט לשלוח לפונקציה מצביע למערך
ולעדכן את אותו מערך באמצעות המצביע.

דוגמה לקלט שורה באמצעות getch:
קוד PHP:
 cahr chbuffer[MAX], x=0;

while((
ch getch()) != '\r' && MAX)
    
buffer[x++] = ch;

buffer[x] = '\0';

printf("%s"buffer); 


שים לב שאם זה היה תוכן של פונקציה, היה ניתן לשלוח את buffer כארגומנט לפונקציה
במקום להכריז עליו, וגם ניתן היה לדאוג להגדילו בצורה דינמית במקום לספק גודל מקסימלי.
_____________________________________
[ זיו ]
[ fat fish ]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 03:31

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר