السلام عليكم...
لا أعرف ما إذا كان العنوان غير مناسب أم لا.. لكن دعنى أقص عليكم سؤالي....
كيف يتم التعامل مع السلاسلا النصيه الخاصه ببئية التشغيل التي يتم إستخدامها بهذه الطريقة:
char *str = "HELLO";
حسب ما أعرف أن str سوف يشير إلى char array موجود عند بيئة التشغيل (أو شئ من هذا القبيل) , إذن هو ليس تحت سيطرة المتغير المسمى str ...
فكيف يمكن التعديل على قيمته؟؟ حيث أن هذا البرنامج يعطي segmentation fault :
#include <stdio.h>
#include <string.h>
void modify_content(char *str)
{
*str = 'A';
}
int main(void)
{
char *str = "HELLO";
modify_content(str); // segmentation fault !!
return 0;
}ملحوظه.. لا أريد إستخدام هذه الطريقة:
char *str = (char*) malloc(sizeof str); strcpy(str, "HELLO");