C: Wie kann ich meine Eingaben umgekehrt ausgeben?
Ich möchte meine Eingaben erst einmal in richtiger Reihenfolge und dann in umgekehrter Reihenfolge ausgeben. Die for-Schleife für die richtige Reihenfolge habe ich schon. Wie sieht die for-Schleife für die umgekehrte Reihenfolge aus?
Es soll quasi so aussehen:
Parameter 1: "myEcho"
Parameter 2: "Guten"
Parameter 3: "Tag"
Parameter 4: "123"
Zeigervektor 4: "123"
Zeigervektor 3: "Tag"
Zeigervektor 2: "Guten"
Zeigervektor 1: "myEcho"
Das Programm bis jetzt:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
int i = 1;
for (int i = 1; i != argc && i <= 10; i++)
printf("Parameter %d: \"%s\"\n", i, argv[i]);
printf("\n");
return 0;
}
4 Antworten
Für den umgekehrten Fall sollte die Schleife bei 10 starten, prüfen wann i dem Wert 1 entspricht und je Iterationsschritt i (um 1) dekrementieren.
Du deklarierst i übrigens einmal zu viel. Entferne entweder die Deklaration vor der Schleife oder die im Schleifenkopf.
Also, weiß nicht, was du mit "argc" bezweckst.
Das erste "int i=1;" brauchst du nicht, du definierst die Variable ja beim "for".
Du könntest ein Problem mit dem Array bekommen, du hast 4 Elemente, läßt aber mit i<=10 zu, daß er aus argv[i] mehr als 4 Elemente ausliest, die ggf. nicht vorhanden sind.
Du kannst das For auch anders herum laufen lassen:
for (int i=4; i>0; i--)
Kann mich auch irren, C ist nicht meine Sprache, aber prinzipiell.
Lass doch einfach mal deine Schleife rückwärts zählen.
i-- um i um 1 zu dekrementieren.
Die Schleife muss dann natürlich mit den höchsten Wert anfangen.
Gruß
Mein Vorschlag:
int i;
printf("vorwaerts\n");
for(i = 1; i < argc; i++) {
printf(" %s\n", argv[i]);
}
printf("\n");
printf("rueckwaerts\n");
for(i = argc-1; i > 0; i--) {
printf(" %s\n", argv[i]);
}
printf("\n");