PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim String-Einlesen mit C



CboyGeek
18-12-2002, 14:43
Hallo!

Ich habe ein Problem mit folgendem Programm:



#include <stdio.h>
#include <string.h>

char eingabeText[50];

void zykl(char eingabe);

main()
{
char menueZykl = '1', menueVersch = '2', menueKombi = '3', menueAbbr = '4', menueEing;

do
{
system("CLS");
printf("\t\t********************************************** ****\n"
"\t\t* *\n"
"\t\t* Waehlen Sie ein Codierungsverfahren aus: *\n"
"\t\t* *\n"
"\t\t* %c - Zyklische Verschiebung *\n"
"\t\t* %c - Verschiebung *\n"
"\t\t* %c - Kombi *\n"
"\t\t* %c - Abbruch *\n"
"\t\t* *\n"
"\t\t********************************************** ****\n\n", menueZykl, menueVersch, menueKombi, menueAbbr);

scanf("%c", &menueEing);

printf("\nBitte geben Sie nun einen Text ein. Hinweis: Es duerfen nur \"einfache\"\n"
"Buchstaben \x28keine Umlaute, etc.\x29, Ziffern, das Leerzeichen und Zeilenumbrueche\n"
"verwendet werden.\n"
"Schliessen Sie hierauf Ihre Eingabe mit dem \'#\'-Zeichen ab.\n\n"
" > ");
scanf("%50[^#]", eingabeText);

if(menueEing == menueZykl)
zykl(*eingabeText);
}
while(menueEing != menueAbbr);
}

void zykl(char eingabe)
{
char ausgabeText[50];
int i, position, laenge;

laenge = strlen(eingabeText);
printf("\nIhre Eingabe lautete: %s\n\n", eingabeText);
printf("Geben Sie nun an, um wieviele Stellen jeder Buchstabe\n"
"im Alphabet verschoben werden soll: ");
scanf("%d", &position);

for(i = 0; i <= laenge; i++)
{
if(eingabeText[i] >= 65 && eingabeText[i] <= 90 || eingabeText[i] >= 97 && eingabeText[i] <= 122)
{
while(eingabeText[i] >= 65 && eingabeText[i] <= 90)
eingabeText[i] = eingabeText[i] + 32;
ausgabeText[i] = eingabeText[i] + position;
}
else if(eingabeText[i] = 32)
ausgabeText[i] = eingabeText[i];
}

printf("\nVerschluesselt: ");

for(i = 0; i < laenge; i++)
printf("%c", ausgabeText[i]);

printf(".\n\n");
system("PAUSE");
}


Nach der Eingabe von "eingabeText" überspringt er mir einfach die folgenden scanf-Anweisungen. Kann mir hier jemand weiterhelfen?

pik7
18-12-2002, 15:32
Hallo,

veileicht hilft das:

char dummy;

scanf("%50[^#]", eingabeText);
while(dummy!='\n') scanf("%c" ,&dummy);

Trillian
18-12-2002, 15:40
scanf("%50s[^#]", eingabeText);

CboyGeek
18-12-2002, 20:20
Trillian: Laut Syntax muss das schon ohne das 's' sein. Andernfalls bewirkt das [^#] auch nichts...

CboyGeek
18-12-2002, 22:10
Ich habs: vor der nächsten scanf-Anweisung muss ein fflush(stdin); stehen, dann klappts. War nur eine Vermutung, deshalb hab ichs mal probiert. Weiss vielleicht jemand, warum genau?