Hilfe zu C-Programm!!!



  • Hallo leute

    ich muss ein C-programm schreiben der soll 5variable suchwörter in einem text suchen (die 5 wörter werden am anfang angegeben),der Text kann man eintippen oder über eine textdatei einlesen.
    der programm soll diese 5 wörter im text suchen (einlesen), und ausgeben wie oft sind die im text und in welchen Zeilen die vorgekommen sind.
    ich hab ein programm geschrieben,der kann nur erkennen dass die wörter vorgekommen sind,ich weiß nicht wie ich das machen soll damit er wie viel und wo die wörter sind,ausgibt

    vielen dank im voraus

    da ist das programm

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    void get_tastatur(char strings[5][21])
    {
    	char text[400];
    	int i;
        gets(text);
        	for (i = 0; i < 5; i++)
    	    {
    		if (strstr(text, strings[i]) != NULL)
    		{
    			printf("\n String \"%s\" wurde gefunden", strings[i]);
    		}
    	}
      	printf("\n\n\n ");
    }
    int get_datei(char dateiname[100], char strings[5][21])
    {
    	FILE *datei;
    	char z_text[400];
    	int zeile = 1, i;
        	if ((datei = fopen(dateiname, "r")) == NULL) return(1);
        	while (fgets(z_text, 400, datei) != NULL)
    	{ 
    		for (i = 0; i < 5; i++)
    		{
    			if (strstr(z_text, strings[i]) != NULL)
    			{
    				printf("\n String \"%s\" wurde in Zeile %i gefunden", strings[i], zeile);
    			}
    		}
            		zeile++;
    	}
            	printf("\n\n\n ");
    
    	return(0);
    }
    int main(void)
    {
    	int i;
    	char strings[5][21], dateiname[100], c;
    	printf("Geben Sie die den zu suchenden Strings an:\n");
    	 	for (i = 0; i < 5; i++)
    	{
    		printf(" String %2i: ",i+1);
    		fflush(stdin);
    		fgets(strings[i], 21, stdin);
    		strings[i][strlen(strings[i])-1] = '\0';
    	}
      	do
    	{
    		printf("\n\n Was wollen Sie einlesen?\n  [1] Tastatureingabe\n  [2] Datei\n ");
    		fflush(stdin);
    		c = getch();
    	}
    	while (c != '1' && c != '2');
    
    	if (c == '1')
    	{
    		printf("\n Tastatur: \n");
    		get_tastatur(strings);
    	}
    	else if (c == '2')
    	{
    		printf("\n Datei: \n\n\n Bitte geben Sie den Dateinamen ein:\n ");
    		fflush(stdin);
    		gets(dateiname);
    
    		if (strlen(dateiname) < 1)
    			printf("\n Es wurde keine Datei angegeben!\n\n\n ");
    		else
    			if (get_datei(dateiname, strings) != 0) printf("\n Fehler beim Einlesen der Datei\n\n ");
    	}
        	return 0;
    }
    


  • Strukturen wären eine Lösung! ein Element das jedesmal wenn das wort gefunden wird um 1 erhöht wird und ein array, bei dem jedes element die dazugehörige zeile speichert. noch besser wäre eine linked list. jedesmal wenn das wort erneut auftaucht wird ein element angefügt das die zeilennummer (und natürlich einen pointer auf das nächste element) enthält. dannach schaust du dir an wie viele elemente die liste hat und das ist gleichzeitig auch die anzahl des wortes im text.


Anmelden zum Antworten