私はこの2つの配列を持っていますが、codeblocksはビルドエラーを表示しませんが、実行するたびに "Segmention fault"となり、プログラムをシャットダウンします。私はの名前1から値を変更することはできませんが、の名前2をこのように変更すると、この作業を行う方法はありますか?はいの場合どうすればいいですかの名前はのためにtrocaが使えますか?charポインタの配列内の文字列を変更する
void troca(char* frase){
unsigned i=0;
while(*(frase+i)!='\0') {
if(*(frase+i)=='O') {
*(frase+i)='0';
}
i++;
}
}
int main(){
char *names1[]={"JOAO","MANUEL","ROBERTO","ZE"};
char names2[][51]={"JOAO","MANUEL","ROBERTO","ZE"};
unsigned i;
for(i=0;i<4;i++) {
troca(names2[i]);
}
return 0;
}
google _string literals_ –
ここでは関係ありませんが、同じ文字列リテラルを指す2つの変数が同じメモリを共有している可能性があります。 1つを変更すると他のものも変更される可能性があります。 – sjsam
*実際のコードを[最小限で完全で検証可能な例]として投稿してください(http://stackoverflow.com/help/mcve)。明らかにこれはあなたのコードではありません - もしそれがコンパイルされなければ、segfaultを生成することはできません。 –