Text in Array speichern + Palindrom
Hay, es geht um mein Programm, welches
Ich habe versucht den Text, welches ohne Sonderzeichen und in Kleinschreibung ausgegeben wird, in ein Array zu speichern (hier: c2[255], innerhalb der ersten For-Schleife zu finden). Dasselbe habe ich in der zweiten For-Schleife gemacht (hier: txt[255]), um den Text, welches inventiert wird abzuspeichern. Sodass ich diese beiden Texte vergleichen kann, um zu prüfen ob der Text ein Palindrom ist oder nicht.
Mein Problem ist nun, dass der Text nicht richtig in das Array c2[255] abgespeichert wird, zur Kontrolle habe ich den Text in Array c2[255] noch einmal ausgegeben. Und bei Array txt[255] werden nur 5 Zeichen ausgegeben.
Ich habe schon die Forensuche benutzt, aber leider komm ich da auch nicht so richtig weiter.
EDIT: Das Programm funktioniert jetzt, danke für eure Hilfe.
Mit freundlichen Grüßen.
Hay, es geht um mein Programm, welches
- ein Text einlesen soll, (✔)
- den Text wieder ausgibt, (✔)
- die Zeichen des Textes ermittelt, (✔)
- den Text ohne Sonderzeichen in Kleinschreibung ausgibt, (✔)
- und entscheidet ob dieser Text ein Palindrom ist. EDIT: (✔)
Ich habe versucht den Text, welches ohne Sonderzeichen und in Kleinschreibung ausgegeben wird, in ein Array zu speichern (hier: c2[255], innerhalb der ersten For-Schleife zu finden). Dasselbe habe ich in der zweiten For-Schleife gemacht (hier: txt[255]), um den Text, welches inventiert wird abzuspeichern. Sodass ich diese beiden Texte vergleichen kann, um zu prüfen ob der Text ein Palindrom ist oder nicht.
Mein Problem ist nun, dass der Text nicht richtig in das Array c2[255] abgespeichert wird, zur Kontrolle habe ich den Text in Array c2[255] noch einmal ausgegeben. Und bei Array txt[255] werden nur 5 Zeichen ausgegeben.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
char text[255],c2[255],txt[255];
int count,len, i=0, [I]j=0, k=0[/I];
//erneute ausgabe der eingaben und zählen der zeichen des eigegebenen textes
printf("Schreiben Sie hier einen Text in der maximalen laenge 255 Zeichen!\n");
fgets(text, sizeof(text), stdin);
printf("\n\nDeine Eingabe war:\n\n");
puts(text);
count= strlen(text);
printf("Die Anzahl der Zeichen: %d\n\n", count-1);
printf("Die Eingabe in Kleinbuchstaben und ohne Sonderzeichen umgewandelt:\n\n");
//Großbuchstaben zu kleinbuchstaben umwandeln
//korrigiert!!
for (; i<=count; i++) //jeder Buchstabe muss einzeln umgewandelt werden
{
if (isalpha(text[i])!=0)
{
c2[j]= putchar(tolower(text[i]));
j++;
}
} c2[j]= '\0';
len = strlen(c2); // länge wird nicht korrekt ausgegeben, da die buchstaben in c2(zeile:35) fehlerhaft abgespeichert werden
printf("\n\nEingabe ausserhalb der for-schleife:\n\n%s\n%d\n\n",c2,len);
//text von c2 umgekehrt ausgeben, um nacher zu vergleichen ob der text ein palindrom ist
//korrigiert!!
for (i=len-1;i>=0;i--) {
txt[k]= putchar(c2[i]);
k++;
} txt[k]= '\0';
printf("\n\n");
// vergleich -> ist der text ein palindrom(wert 0=der text ist ein palindrom)
//korrigiert!!!
if (strcmp(c2,txt) == 0) {printf ("Palindrom\n\n");}
else {printf("Kein Palindrom\n\n");}
return 0;
}
Ich habe schon die Forensuche benutzt, aber leider komm ich da auch nicht so richtig weiter.
EDIT: Das Programm funktioniert jetzt, danke für eure Hilfe.
Mit freundlichen Grüßen.
Zuletzt bearbeitet:
(Code verändert!)