Textdatei durchsuchen ausgeben

knibbel11

Grünschnabel
hallo ich kommme gerade nicht weiter.

ich soll dei textdatei einlesen. und dann nach einem wort scuhen z.b. symbol und in der zeile in der das wort steckt soll dann ausgegeben werden.

kann mir jmd helfen?



void neue_Funktion()

{

{
FILE *fp;
int i;
char text[255];
char suchwort[] = "a";
char* ptr;

fp = fopen ("d:\\test.cfg","rt");
if (fp==NULL)
{
printf("Fehlen von diso_b_text.ini\r\n");
}
else
{
i=0;
while ( (fscanf(fp,"%s\r\n",text) != EOF) )
{

ptr = strstr (text,suchwort );

if ( ptr != NULL )
{

//printf ("%s\n",suchwort);
printf ("%s\n",text);

}
}

}
}
}


so sieht bis jetzt mein quellcode aus
 
so habs hinbekommen^^ desweiteren kommt noch dazu das ich nun nach mehrern wötern suchen muss und diese zeilen dann ausgegeben werden. hat jmd ne idee wie ich das realisiere? mit welcher funktion?


void neue_Funktion()



{
FILE *fp;
int i;
char text[255];
char suchwort[] = "benni";
char* ptr;





fp = fopen ("d:\\test.cfg","rt");
if (fp==NULL)
{
printf("Fehlen von diso_b_text.ini\r\n");
}
else
{
i=0;
while ( (fscanf(fp,"%s\r\n",text) != EOF) )
{




ptr = strstr (text,suchwort);

if ( ptr != NULL )
{


fgets(text,255, fp);
printf("%s ",suchwort);
printf("%s\r\n",text);





}
}
}
}
 
Hallo und willkommen im Forum ^^

also deine Funktion funktioniert ja scho ganz gut eigentlich.
Du willst jetzt Praktisch die ganze Zeile anstatt nur dem Wort ausgegeben haben wenn ich das richtig verstanden habe oder?

Anstatt also immer nur ein wort auslesen und zu vergleichen liest du einfach mit fgets() eine komplette Zeile aus und suchst darin das Wotrt und wenn vorgekommen einfach die Zeile ausgeben.

(hab das zu fgets übrigens au hier im Forum gefunden :) durch google XD )


EDIT: ups warst schneller :D

Das du mehrere Wörter suchen musst sollte ja durch mehrere strstr() mit den jeweiligen wörtern sehr leicht zu lösen sein oder versteh ich was falsch ?

PS. du solltest die Code Tags benutzen das macht dein Code besser lesbar^^
 
Zuletzt bearbeitet:
ne verstehst du schon richtig^^ das war auch mein erster gedanke. dachte aber dann wenn man 50 suchwörter hat wird das programm ja ewig lang und komplizierter. müsste doch irgendwas geben was leichter wäre oder?

schonmal vielen danke für die hilfe
 
Hiho

also ich würds mit nem Array aus den Suchwörtern und ner for-schleife machen siehe Beispielcode.

übrigens als ich dein code versucht hab ist mir aufgefallen das er nicht die gesammte zeile ausgibt sonern erst ab der Stelle wo das Zeichen vorkommt, weis net ob das so beabsichtigt war ^^


greetz sand13r
Code:
void neue_Funktion()
{
 FILE *fp;
   int i;
   char text[255];
   char suchwort[2][20]={"a","b"};
   int AnzahlSuchwoerter=2;
   char* ptr;

   fp = fopen ("d:\\test.cfg","rt");
   if (fp==NULL)
   {
      printf("Fehlen von diso_b_text.ini\r\n");
   }
   else
   {
      i=0;
      while ( feof( fp ) != EOF )
      {

         fgets(text,255, fp);

         for(int i =0;i<AnzahlSuchwoerter;i++)
         {
            ptr = strstr (text,suchwort[i]);

            if ( ptr != NULL )
            {
               printf("%s ",suchwort[i]);
               printf("%s\r\n",text);

            }
         }
      }
   }
}
 
vielen dank erstmal für deine bemühungen und hilfe

na war eingetlich nicht beabsichtigt, aber das es ehh immer das erste wort in der zeile ist ist das ok so^^

werds jetzt mal mim array probieren
 
Code:
void neue_Funktion()
{
 FILE *fp;
   int i;
   char text[255];
   char suchwort[2][20]={"benni","hallo"};
   int AnzahlSuchwoerter=2;
   char* ptr;

   fp = fopen ("d:\\test.cfg","rt");
   if (fp==NULL)
   {
      printf("Fehlen von diso_b_text.ini\r\n");
   }
   else
   {

      while ( feof( fp ) != EOF )
      {

         fgets(text,255, fp);

         for (i=0; i<=AnzahlSuchwoerter; i++)
         {
            ptr = strstr (text,suchwort[i]);
            if ( ptr != NULL )
            {
               printf("%s ",suchwort[i]);
               printf("%s\r\n",text);

            }
         }
      }
   }
}
 
Zurück