I C durch folgenden Code am Üben:Aussagen aus while-Schleife nicht ausgeführt
char* streverse(char* s){
int len=strlen(s);
int i=0; int j=len;
char* r;
while(i<j){
s[i]=s[j];
i++; j--;
}
printf("\nReverse string is %s",s);
return r;
}
Aber die printf führt nie. Wenn ich das entferne:
printf führt aus. Das ist seltsam, weil die while-Schleife sowieso unabhängig von der obigen Zuweisung endet. Gibt es Anhaltspunkte dafür, dass printf bei obiger Zuweisung nicht ausgeführt wird?
EDIT:
Durch die printf Unterschrift jetzt korrigieren druckt.
Undefiniertes Verhalten. –
Sie wissen, dass 's [strlen (s)]' immer der Terminator ist? Also rate mal, was in der allerersten Iteration der Schleife passiert ... –
Auch das Schreiben in 'stdout' (was' printf' tut) löscht den Puffer (d. H. Schreibt tatsächlich) auf Newline. Das Drucken der einzigen neuen Zeile * zuerst * in einem 'printf'-Aufruf macht also keinen Sinn. –