Zeichkette in Strings suchen. Wie?



  • Auch hier ein freundliches Hallo in die Runde,

    Da ich mich bereits in C++ Forum verirrt hatte, poste ich einfach diesen Link hier rein.

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1696807.html#1696807

    Dort ist mein Anliegen zufinden, sowie die Erklärung warum ich erst im falschen Forum war und wie gut ich C kenn, bzw womit ich arbeite.

    Auch hier schonmal vielen Dank.

    MfG Ben



  • fopen, feof, fgetc, fscanf, fclose und zum angucken printf, viel mehr funktionen dürften nicht nötig sein. eine bis zwei while-schleifchen,
    variablen für die werte, konstanten für die schlüsselwörter brauchst du dann noch und das wars auch schon.



  • Ich stehe jetzt vor folgendem Problem:

    Wie finde ich die Zahlen aus dem Text, die ich benötige?
    In Excel funktionierte es wie gesagt, indem ich eine der Konstanten suchte und die Zahlenreihe davor für meine Berechnnungen nutzte.

    Kann mir einer von euch sagen, wie ich nach dieser Zahlenreihe in C suchen kann?

    Danke. MfG





  • 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 )
    

Anmelden zum Antworten