עזרה בשפת C - מצביע למחרוזת - תכנות - HWzone פורומים
adplus-dvertising
עבור לתוכן
  • צור חשבון
  • מי אנחנו?

    שלום אורח/ת!

     
    שים לב - על מנת להשתתף בקהילה שלנו, להגיב ולפתוח דיונים חדשים, עליך להצטרף כחבר רשום.

    החברים שלנו נהנים מיתרונות רבים, כולל היכולת להשתתף בדיונים, להנות מהגרלות ומבצעים לחברי האתר, ולקבל מידי שבוע את התכנים הבולטים שלנו ישירות במייל.

    לא אוהבים שמציקים לכם במייל? ניתן להירשם לאתר אך לוותר על הרישום לעידכוני המייל השבועיים.

עזרה בשפת C - מצביע למחרוזת


Dolmiti
 Share

Recommended Posts

#include <stdio.h>
#include <string.h>
void f(char *p)
	{
		strcpy(p,p+2);
	}
void main()
{
	char *myName="david";
	f(myName);
	printf("%s", myName);
}

האם הפונקציה תעבוד ותקצץ את המחרוזת? אם p עובר by value אז הפונקציה אמורה לקצץ את המחרוזת המקורית?

קישור לתוכן
שתף באתרים אחרים

 

- לא מכיר דרך ב-C להעביר מחרוזת by value, מה שבפועל עובר זה פוינטר לאיבר הראשון של המחרוזת.

- אסור להשתמש ב-strcpy כשמחרוזת המקור והיעד חופפות בזכרון

נערך על-ידי etal
קישור לתוכן
שתף באתרים אחרים

לא טענתי שזה לא עובד.

השימוש ב-strcpy הוא לא נכון כי התוצאה בשימוש כזה היא undefined כלומר שפת ה-C לא מבטיחה לך תוצאה מסויימת. המשמעות היא שהתוצאה תלויה במימוש הספציפי של הפונקציה, בסביבה שונה, בקומפיילר אחר אתה עלול לקבל תוצאה שונה.

נערך על-ידי etal
קישור לתוכן
שתף באתרים אחרים

אוקיי. אז כדי להבין את דבריך, זה אומר שהקוד להלן כן יעבוד וידפיס דן? [כי אני מקבל שגיאה Segmentation fault על השורה של דן)

 

void f(char *p)
	{
		strcpy(p,"Dan");
	}
void main()
{
	char *myName="david";
	f(myName);
	printf("%s", myName);
}

 

נערך על-ידי Dolmiti
קישור לתוכן
שתף באתרים אחרים

הצטרפ/י לדיון

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

אורח
הוסף תגובה

×   התוכן שהודבק הוא עם עיצוב.   הסר עיצוב

  Only 75 emoji are allowed.

×   הקישור שלך הוטמע אוטומטית.   הצג כקישור רגיל

×   התוכן הקודם שלך שוחזר אוטומטית.   נקה הכל

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
  • צור חדש...