?
frager schrieb:
und wenn der benutzer das zeichen eingibt ?
man nehme ein zeichen, das der benutzer nicht eingeben kann, z.b. \v
oder sooo.
guckst du hier:
#include <math.h>
#include <stdio.h>
#include <windows.h>
void wake_him_up()
{
int i;
puts("Ding Dong !");
for ( i=0; i<3; i++ )
{
putchar('\a');
Sleep(600);
}
exit(1);
}
int chk_input( int fragen, int antwort )
{
if( antwort > fragen )
{
printf("H%c%c%c%c%c%c%c%c?\n", 0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84);
wake_him_up();
return 1;
}
return 0;
}
int get_question( char* file, char* buf)
{
int c=0;
int anzahl=0, antwort=0, zeichen=0;
FILE *fp = fopen(file, "r" );
//sprintf(format, "< Anzahl: %d Antwort: %d Zeichen: %d >\n", fragen, antwort, zeichen );
if ( NULL == fp ) return 1;
while( !feof(fp) )
{
c = getc(fp);
if ( c == '<' )
break;
}
// * asterisk ignoriert die stringfelder
fscanf(fp, "%*s %d %*s %d %*s %d", &anzahl, &antwort, &zeichen );
printf("%d %d %d\n", anzahl, antwort, zeichen );
while( !feof(fp) )
{
c = getc(fp);
if ( c == '>' )
break;
}
c = getc(fp); // zeilenumbruch verwerfen.
fread(buf, zeichen, 1, fp );
fclose(fp);
return 0;
}
int main()
{
char* file = "test.txt";
char format[256]={0};
char buf[256]={0};
int fragen=1, antwort=1;
int zeichen;
char* find = NULL, *next = NULL;
char* frage="agga ugga for president?\n\v";
char* antwort1= "1) ja\n\v";
char* antwort2= "2) nein\n\v";
char* antwort3= "3) vielleicht\n\v";
FILE *fp = fopen(file, "w" );
if ( !fp ) return 1;
zeichen=strlen(frage)+strlen(antwort1)+strlen(antwort2)+strlen(antwort3);
/*
puts("Anzahl Fragen, Antwort ?");
scanf("%d %d", &anzahl, &antwort);
*/
if(chk_input(fragen, antwort )) return 1;
sprintf(format, "< Anzahl: %d Antwort: %d Zeichen: %d >\n", fragen, antwort, zeichen );
// puts(format);
fputs(format, fp );
fputs(frage, fp );
fputs(antwort1, fp );
fputs(antwort2, fp );
fputs(antwort3, fp );
fclose(fp);
if ( get_question(file, buf) ) return 1;
puts(" :-) :-) :-) demo loop :-) :-) :-) ");
find = buf;
while( next = strchr(find, '\v') )
{
*next = '\0';
printf("%s",find);
find = next+1;
}
scanf("%d", &antwort );
if ( antwort != 1 )
{
puts("Falsche Antwort !");
wake_him_up();
return 1;
}
else puts("Logisch !");
return 0;
}