修改作为函数传入的字符串文字

如果我在程序中有一个function

int main(){ char *name = "New Holland"; modify(name); printf("%s\n",name); } 

调用此函数

 void modify(char *s){ char new_name[10] = "Australia"; s = new_name; /* How do I correct this? */ } 

如何更新字符串文字名称(现在等于新荷兰语)的值与澳大利亚。

我认为我面临的问题是new_name是本地存储,因此在函数返回后,该变量不会被存储

试试这个:

 #include  void modify(char **s){ char *new_name = "Australia"; *s = new_name; } int main(){ char *name = "New Holland"; modify(&name); printf("%s\n", name); return 0; } 

如果将new_name定义为数组,那么它将成为局部变量,而不是上面定义指向字符串文字的指针。 此外,在C中,参数按值传递,因此您需要将指针传递给要修改的对象。

试试这个:

 #include  #include  #define MAX_NAME_LEN 50 void modify(char *mdf){ char *new_name = "Australia"; strcpy(mdf,new_name); } int main(){ char name[MAX_NAME_LEN] = "New Holland"; modify(name); printf("%s\n", name); return 0; } 

使用strcpy / memcpy将本地数组变量绑定到外部字符串文字。