folgendes Beispiel vertauscht zwei String miteinander:
Code: Alles auswählen
#include <stdio.h>
void strturn(char*, char*);
int main()
{
setbuf(stdout, NULL);
char Text1[50], Text2[50];
puts("Gib einen Text ein:");
gets(Text1);
strturn (Text1, Text2);
printf("Das ist verkehrt:\n%s", Text2);
return 0;
}
void strturn(char *String1, char *String2)
{
char *Start = String1;
printf("Start: %s\n", Start);
while (*String1 != '\0') String1++;
String1--;
while (String1 >= Start){
printf("String1: %s String2: %s\n",String1, String2);
*String2++ = *String1--;
}
*String2 = '\0';
printf("String1: %s String2: %s\n",String1, String2);
}
1.
Code: Alles auswählen
printf("String1: %s String2: %s\n",String1, String2);
2.
Code: Alles auswählen
printf("String1: %s String2: %s\n",String1, String2);
3. Wie ist die Reihenfolge bzw. was wird zuerst gemacht?Gib einen Text ein:
asdfg
Start: asdfg
String1: g String2: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠asdfg
String1: fg String2: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠asdfg
String1: dfg String2: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠asdfg
String1: sdfg String2: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠asdfg
String1: asdfg String2: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠asdfg
String1: ╠asdfg String2:
Das ist verkehrt:
gfdsa
Wird zuerst String1 dekrementiert, dann String2 inkrementiert und erst dann die Zuweisung gemacht? Verändern String2 und String1 ihre Adressen VOR der Zuweisung, oder erst danach, wenn die Anweisung abgeschlossen ist - also nach Semikolon?*String2++ = *String1--;
4.
Code: Alles auswählen
*String2 = '\0';
printf("String1: %s String2: %s\n",String1, String2);
5. Warum muss ich bei der Parameterübergabe mit Arrays ohne Adressoperatoren arbeiten?
Code: Alles auswählen
strturn (Text1, Text2);
Danke!
PS: Wo/wie kann ich hier einstellen, dass ich C-Code benutze? Damit die Formatierung besser aussieht.