R
Hallo corado!
Warum machst du nicht so was:
scanf("%[^\n]", c_name);
#include <stdio.h>
#include <stdlib.h>
void clpuf(void)
{
while (getc(stdin) != '\n')
;
}
int main()
{
int i;
char c_posi[200], c_nega[200];
for (i = 0; i < 200; i++)
c_posi[i] = c_nega[i] = 0;
printf("Beispiel Positiv- und negativ Liste bei scanf\n");
printf("\nBitte zum Test einen String\nMuster.....: 123430abc \neingeben.\nEingabe: ");
/** liest nur Zeichen ein die innerhalb der eckigen Klammern stehen
* und beendet die Eingabe in die Variable beim ersten Zeichen, das nicht
* in der Liste steht*/
scanf("%[0123456789+-*/=]", c_posi);
printf("Die Eingabe war: %s \n\n", c_posi);
/** Beseitigt die restlichen im Tastaturpuffer stehenden Zeichen, da diese sonst
* bei der naechsten Eingabe wieder verwendet werden */
clpuf();
printf("\nBitte zum Test einen String\nMuster.....: asdfgh123 \neingeben.\nEingabe: ");
scanf("%[^1234567890]", c_nega);
printf("Die Eingabe war: %s \n\n", c_nega);
clpuf(); /** Tastaturpuffer leeren*/
printf("\nBitte zum Test einen String mit Leerzeichen eingeben\nEingabe: ");
/** liest alle Zeichen außer den Newline-Zeichen(Enter-Taste) ein*/
scanf("%19[^\n]", c_nega);
printf("Die Eingabe war: %s \n\n", c_nega);
printf("Das Programm wird nun beendet.....\n");
return EXIT_SUCCESS;
}`
Mit19 kannst du in diesen Beispiel die Zahl der einzulesenden Zeichen begrenzen, um das abzusichern.
Sorry aber ich hatte dieses Jahr im Januar einen sehr schweren Arbeitsunfall. Ich hoffe i am back again.
Laut dem Docs bin ich frühestens wieder Ende 2099 wieder arbeitsfähig. Dann bin ich 134 Jahre alt.
Viel Spaß beim ausprobieren.
Rustyoldguy