Ich habe diese zwei Arrays, Codeblocks gibt mir keinen Build-Fehler, aber jedes Mal, wenn ich es führe, gibt es "Segmentation Fehler" und es schließt das Programm, ich habe es debuggt und gefunden out Ich kann Werte von names1 auf diese Weise nicht ändern, aber names2 ändern dieser Weg funktioniert gut, gibt es eine Möglichkeit, dies zu tun? Wenn ja wie mache ich troca arbeiten für names1?Ändern von Zeichenfolgen in Array von Zeichenzeiger
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_ –
Nicht relevant hier, aber ich habe irgendwo gelesen, dass zwei Variablen, die auf das gleiche String-Literal verweisen, den gleichen Speicher teilen. Die Änderung kann auch die andere ändern. – sjsam
Bitte posten Sie den * tatsächlichen * Code als ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve). Offensichtlich war das nicht Ihr Code - wenn er nicht kompiliert wird, kann er keinen segfault erzeugen. –