פורסם 2018 בפברואר 67 שנים למה אני מקבל שגיאה בקוד המצורף תודה לעונים ציטוט #include <stdio.h> #include <string.h> #include <stdlib.h> char *InsertAChar(char *s, char c) { char *foo; foo=(char*)calloc(strlen(s)+1, sizeof(char)); if ( !foo) return NULL; strcpy(foo, s); foo[0]=c; strcpy(s, foo); /* ERROR!! */ free(foo); return s; } int main() { char * str="avironf"; char * p=str+3; printf("%s\n",InsertAChar(p, '$')); /* avi$onf*/ return 0; } נערך 2018 בפברואר 67 שנים על-ידי Dolmiti
פורסם 2018 בפברואר 77 שנים היה עוזר אם תאמר איזו שגיאה אתה מקבל. בכל מקרה, כשאתה מגדיר מחרוזת בצורה הזו: char* str = "hello"; אז המחרוזת מוגדרת במקום בזכרון שהוא לקריאה בלבד, נסיון לכתוב אליו יגרור שגיאה. בשביל להגדיר את המחרוזת כך שתוכל לכתוב אליה, צריך להגדיר ככה: char str[] = "hello"; זה אומר לקומפיילר "צור מערך בשם str ותאתחל את התוכן שלו למחרוזת "hello", וככה תוכל גם לכתוב אליו. חוץ מזה, לא הבנתי כל כך מה הפואנטה של הפונקציה InsertAtChar, למה את מסתבך עם ליצור מחרוזת חדשה, להעתיק אליה ואז להעתיק בחזרה, במקום פשוט לעשות פשוט s[0]=c.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.