Ich habe eine Frage, ich kenne die folgende Implementierung korrekt funktioniert:C Programmieren, Ändern Zeichenfolge in Funktion, ohne die Größe als Parameter übergeben
void editMessage(char* message , int sizeOfMessage){
char newMessage[] = "modified";
printf("size of message is %lu \n",sizeof(message));
printf("size of new message is %lu \n",sizeof(newMessage));
if (sizeof(newMessage) <= sizeOfMessage) {
for (int i=0 ; i < sizeof(newMessage); i++) {
message[i] = newMessage[i];
}
} else {
printf("size of new message is too big\n");
}
}
int main() {
char randMessage[] = "original message";
editMessage(randMessage,sizeof(randMessage));
printf("the value of randMessage after function call is %s \n",randMessage);
return 0;
}
aber wenn ich will den String-Wert in der Funktion ohne Übergang ändern die Größe des Zeigers, ist es möglich? wenn ja, wie? wenn nicht, warum nicht?
Ich meine, ich bin auf der Suche über editMessage Funktion, so etwas zu ändern:
void editMessage(char* message){
char newMessage[] = "modified";
printf("size of message is %lu \n",sizeof(message));
printf("size of new message is %lu \n",sizeof(newMessage));
if (sizeof(newMessage) <= sizeOf(message)) {
for (int i=0 ; i < sizeOf(message); i++) {
message[i] = newMessage[i];
}
} else {
printf("size of new message is too big\n");
}
}
und den Anruf in der Haupt wie diese
editMessage(randMessage);
, warum dies nicht funktioniert, könnte man bitte erklären, im Detail, und dann würde ich seine Antwort akzeptieren? Danke!
'sizeof (Nachricht)' ist die * Größe des Zeigers *, nicht die Größe des Objekts verweist er auf. – EOF
Verwenden Sie 'strlen', um die * Länge * eines Strings zu erhalten. –
@ user3001566 Zumindest die erste Funktion, die Sie gezeigt haben, ist falsch und ergibt keinen Sinn :) –