在另一个函数中修改数组-崩溃 #包括 无效功能1(字符*a); int main() { char*mStat=“欢迎回家”; printf(“前面的文本:(%s)\n”,mStat); 职能1(mStat); printf(“以下文本:(%s)\n),mStat); 返回0; } void func1(字符*a) { printf(“输入:(%s)\n”,a); a[1]=“a”; }

在另一个函数中修改数组-崩溃 #包括 无效功能1(字符*a); int main() { char*mStat=“欢迎回家”; printf(“前面的文本:(%s)\n”,mStat); 职能1(mStat); printf(“以下文本:(%s)\n),mStat); 返回0; } void func1(字符*a) { printf(“输入:(%s)\n”,a); a[1]=“a”; },c,arrays,C,Arrays,在我修改字符串中字符的行中,该程序始终会因segfault而崩溃。怎么了?正确的做法是什么 您正在修改字符串文字。这种操作依赖于编译器。如本文所述():尝试修改字符串文字会导致未定义的行为:它们可能存储在只读存储器中(例如.rodata)或与其他字符串文字组合 在您的例子中,似乎您实际上试图修改只读存储器,而C中的char*mStat是一个常量字符串。您无法修改指定的值 如果您想修改它,您应该使用以下命令:char mStat[]=“welcome home”您正在修改“字符串文字”。更改cha

在我修改字符串中字符的行中,该程序始终会因segfault而崩溃。怎么了?正确的做法是什么

您正在修改字符串文字。这种操作依赖于编译器。如本文所述():尝试修改字符串文字会导致未定义的行为:它们可能存储在只读存储器中(例如.rodata)或与其他字符串文字组合 在您的例子中,似乎您实际上试图修改只读存储器,而C中的char*mStat是一个常量字符串。您无法修改指定的值


如果您想修改它,您应该使用以下命令:
char mStat[]=“welcome home”

您正在修改“字符串文字”。更改char*mStat=“欢迎回家”
char mStat[]=“欢迎回家”这真的很有帮助。我做C已经有一段时间了。有关同一问题的更多信息,请参见:
#include <stdio.h>
void func1(char *a);
int main()
{
        char *mStat="welcome home";
        printf("Text before: (%s)\n",mStat);
        func1(mStat);
        printf("Text after: (%s)\n",mStat);
        return 0;
}


void func1(char *a)
{
        printf("Input: (%s)\n",a);
        a[1]='a';
}