עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

איך פונקציה מחזירה מחרוזת בשפת C?

Featured Replies

פורסם

או במילים אחרות יש לי כמה טעויות בקוד: רשמתי בהערה את השגיאות

אני רוצה לכתוב פונקציה שמחזירה מחרוזת: מתחילה במילה דודו ומסתיימת במספר רנדומלי מ-0 עד 99999

 
char* GetStr();
main()
{
int i;

for (;i<3; i++)
{
char *p = GetStr();
fprint("%s", &p);//run time error
}
return 0;
}

char* GetStr()
{
char pre[5]="dudu", suf[6]="", *ans;

sprintf (suf, "%d", rand() % 100000);

//Concatenates
strcpy(&ans, "");
strcat(&ans, pre);
strcat(&ans, itoa(suf));

fprint("ans: %s",&ans); //show: dudu@#$@#$

return ans;
}

פורסם

אתה משתמש ב-ans בלי לאתחל אותו בכלל - הוא מצביע לזבל. חוץ מזה אתה גם משתשמ ב-strcpy,strcat ו-itoa לא נכון.

יש שתי דרכים "להחזיר" מחרוזת מתוך פונקציה: או שהפונקציה תקצה את המחרוזת בעצמה (malloc) ותחזיר אותה (ואז מי שמשתמש בפונקציה יהיה אחראי לשחרר אותה כשהוא מסיים לעבוד איתה), או שהפונקציה תקבל כפרמטר מצביע למערך שהוקצה מראש (כלומר, נקרא malloc מחוץ לפונקציה, או שזה מערך סטטי) ואז היא רק צריכה למלא אותו.

פורסם
  • מחבר

אתה משתמש ב-ans בלי לאתחל אותו בכלל - הוא מצביע לזבל.

איך לאתחל?

חוץ מזה אתה גם משתשמ ב-strcpy,strcat ו-itoa לא נכון.

איך משתמשים נכון?

יש שתי דרכים "להחזיר" מחרוזת מתוך פונקציה: או שהפונקציה תקצה את המחרוזת בעצמה (malloc) ותחזיר אותה (ואז מי שמשתמש בפונקציה יהיה אחראי לשחרר אותה כשהוא מסיים לעבוד איתה)

הכוונה שפונקציה main עושה free למצביע שכלל לא נמצא אצלה?

פורסם

איך לאתחל?

באמצעות malloc כמובן.

איך משתמשים נכון?

קוראים את התיעוד של הפונקציות ו/או מחפשים דוגמאות שימוש.

הכוונה שפונקציה main עושה free למצביע שכלל לא נמצא אצלה?

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.