?
Hi!
Hier ein einfacher Obstparser:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define STRLEN_MAX 64
char* keywords[] = {"Bananen", "Pflaumen", "Birnen" };
int is_keyword (char* s)
{
int i = 0, n = sizeof(keywords)/sizeof(*keywords);
while(i<n)
{
if ( 0==strcmp(s, keywords[i]))
break;
i++;
}
return i<n;
}
int skip_spaces(FILE*fp, int c)
{
while(isspace(c))
c = fgetc(fp);
return c;
}
int main()
{
FILE* fp;
char* fname = "datei.txt";
int value = -1;
char buf[STRLEN_MAX+1]={0};
int i=0, c=0;
if ( NULL == (fp = fopen ( fname, "rb" )))
return 1;
while ( !feof(fp) )
{
if ( isspace(c = fgetc(fp)))
c = skip_spaces(fp,c);
if (isdigit(c))
{
ungetc(c,fp);
if ( 1!=fscanf(fp,"%d", &value))
break;
}
if (isalpha(c) && value != -1)
{
i=0; memset(buf,0,sizeof(buf));
while (isalpha(c) && i<=STRLEN_MAX)
{
buf[i++] = c;
c = fgetc(fp);
}
if (is_keyword(buf))
{
printf("%s %d\n", buf, value);
}
value = -1;
}
}
return 0;
}
Gruß,
B.B. ( jepp )