c-Programm zum drucken jedes Wort in string rückwärts
dies ist mein Quellcode für den Druck jedes Wort in der Zeichenfolge zurück. aber dieser code ist nur den Druck des 1. Wort rückwärts und nicht der gesamte string. nach dem drucken, 1. Wort rückwärts, die es erzeugt ein Muster von 1. und 2. Worte, gedruckt nach hinten. Wenn während anstelle von wenn-dann-es erzeugt eine Endlosschleife.
//Print an Entered String Backwards
#include <stdio.h>
#include <string.h>
int main()
{
int j,i;
char str[100];
printf("Enter String\n");
gets(str);
printf("\nString in Reverse Order\n");
i=0;
while(str[i]!='\0')
{
if(str[i]==' ')
{
for(j=i-1;j>=0;j--) //Loop starts from last char and decrements upto 0th char
printf("%c",str[j]);
printf(" ");
}
i++;
}
}
Sortieren Sie die indetation. BTW - Sind diese Dozenten immer besser an die Probleme, die Sie setzen Studenten. @userX - Lernen Sie den debugger verwenden
Einrückung?
Ihre Logik ist falsch. Rahmen der Logik, die mit Stift und Papier, testen Sie es manuell, dann schreiben Sie das Programm.
WhozCraig (Dank) Feste für Sie
Ich dont bekommen, die Beschreibung..., Wenn eine Eingabe 'bar dog', zu welchen Leistungen Sie wollen: "dog bar" oder " rab "Gott" - oder vielleicht "Gott rab'...?
Einrückung?
Ihre Logik ist falsch. Rahmen der Logik, die mit Stift und Papier, testen Sie es manuell, dann schreiben Sie das Programm.
WhozCraig (Dank) Feste für Sie
Ich dont bekommen, die Beschreibung..., Wenn eine Eingabe 'bar dog', zu welchen Leistungen Sie wollen: "dog bar" oder " rab "Gott" - oder vielleicht "Gott rab'...?
InformationsquelleAutor Bob | 2014-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verwenden
gets
. Es ist nicht sicher, und ist veraltet. Verwendenfgets
anstatt zu Lesen einen input-stringstdin
. Nun, zu drucken, jedes Wort in der Zeichenfolge rückwärts, Sie brauchen, um Ihrewhile
Schleife.gets
ist unsicher und nicht ratsam, weil wenn der input-string ist zu lang, dann würde es die den Pufferüberlauf verursacht Undefiniertes Verhalten und wahrscheinlich Absturz des Programms aufgrund segfault.allerdings, wenn der input-string ist klein genug, um in dem array gespeichert
str
, danngets
funktionieren würde, aber Sie sollte das nicht tun.ist die richtige. fgets() ist die sichere Art zu Lesen Saiten.
InformationsquelleAutor ajay
Jedes mal, wenn Sie die Prüfung der inneren Schleife auf null, was gedruckt wird bis zum start der string jedes mal. Sie müssen einfach testen, bis zu den letzten Raum gefunden.
So etwas wie dieses für die innere Schleife
dies beginnt mit
j=i-i == 0
. So beginnt es mit dem ersten Charakter und geht weiter auf die andere Richtung, in eine Art von heap-Speicher. Es wird interessant sein 🙂aber es ist nicht die Generierung der Ausgabe, die ich will! 🙂
Einfach konvertieren
j=i-i
zuj=i
🙂Dies ist praktisch die gleiche Antwort wie WhozCraig ..
InformationsquelleAutor praks411
Müssen keine doppelte Schleife, die Sie tun können in " single-loop.
kumar möchte ich die Reihenfolge bleibt gleich.
wie "Hund bellen" Gott-Krabbe" oder "Hund bellen", "back Hund"
Gott krab es sein sollte 🙂
ich gepostet, andere Antwort überprüfen.
InformationsquelleAutor Pawan Chaurasiya
Die Schleife, die Sie kommentiert, sollte nicht auf die 0. char, sollte aber gehen bis zu den letzten " weißen Raum( wenn es eine war ).
Ich bearbeitet meine Antwort.
Sollten Sie auch initialisieren
lastWhitespace
vor der loop. Was ist, wenn der Satz beginnt mit vielen Leerzeichen.dieser code funktioniert nur bis zu paar Worte und nicht die Worte in string.
Weil man nur 100 Zeichen in der Zeichenfolge? Es sollte nicht für das Letzte Wort nur, weil es muss GESONDERT behandelt werden.
InformationsquelleAutor Valdrinit
InformationsquelleAutor Pawan Chaurasiya