עבור לתוכן
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.

Featured Replies

פורסם
#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

פורסם
  • מחבר

זה כן עובד ומקצץ לתו האחרון

void main()
{
    char f[]="abc";
    strcpy(f,f+2);
    printf("%s", f);
}

 

פורסם

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

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

נערך על-ידי etal

פורסם
  • מחבר

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

 

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

 

נערך על-ידי Dolmiti

פורסם

אתה צריך לשנות את התחביר לזה:

char myName[]="david";

כשאתה מצהיר ככה הוא שם את הנתונים במחסנית ולכן הזיכרון בעל הרשאת כתיבה

ראה מידע לגבי heap vs stack

פורסם
  • מחבר

תודה על תשובתך!

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

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

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

דיונים חדשים

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.