ich einen Stringliteral mit der Verwendung von Zeigern auf umkehren versuchen, obwohl mein Code SEGSIGV Signal auf *head=*tail
Linieein Zeichenfolgenliteral in C Reversieren mit Zeigern
char* reverse(char* input, int n) {
char temp;
char* head= input;
char* tail= &input[n-1];
while(head<tail){
temp=*head;
*head=*tail;
*tail=temp;
head++;
tail--;
}
return input;
}
int main(void){
char* sentence= "All work and no play makes jack a dull boy";
reverse(sentence, strlen(sentence));
printf("%s", sentence);
return 0;
}
Ich weiß nicht empfangen, wenn ich versuche um auf das eingeschränkte Speichersegment zuzugreifen.
Stringliterale nicht beschreibbar sein könnte, und ihnen zu schreiben gibt nicht definiertes Verhalten. Sie müssen stattdessen entweder ein 'char'-Array verwenden oder die umgekehrte Zeichenfolge an einen anderen Speicherort schreiben (der schreibbar ist). – Dmitri
String-Literale sind normalerweise schreibgeschützt, und jeder Versuch, einen zu ändern, führt zu undefiniertem Verhalten und normalerweise zu einem Absturz. Tu es nicht! –