Newsgroup: it.comp.lang.c
Titolo: Confronto fra stringhe

Io dovrei fare un programma che apre due file di testo in lettura, per
ogni riga del primo file deve contare quante volte compare al suo
interno la stringa presente nella riga di uguale posizione del secondo
file e alla fine deve scrivere i risultati in corrispondenti righe di un
file di output. Creo i file ma per quanto riguarda il confronto sono in
difficoltà. Apro i due file in lettura, ma non riesco a leggere una riga
di uno,
una riga dell'altro e poi non riesco a verificare quante volte la
stringa 2 si trova in stringa 1.
Se qualcuno fosse in grado di farmi un esempio magari ci salto fuori
#include <stdio.h>
#include <string.h>
int main (){
int i;
char nomefile1[100],nomefile2[100],nomefile3[100],riga1[100],riga2[100];
const n=100;
FILE* file1;
FILE* file2;
FILE* file3;
printf("inserisci il nome del primo file origine:");
gets(nomefile1);
printf("scrivi il nome del secondo file origine:");
gets(nomefile2);
printf("inserisci il nome del file destinazione:");
gets(nomefile3);
if ((file1=fopen(nomefile1,"r"))==NULL)
printf("Il primo file non esiste \n");
  if ((file2=fopen(nomefile2,"r"))==NULL)
	  printf ("Il secondo file non esiste\n");
  else {
     (file3=fopen(nomefile3,"a"));{
	    fgets(riga1,100,file1);	
		{fgets(riga2,10,file2);
		 if (strstr(riga1,riga2)!=NULL) 
			(fputs(riga2,file3));
		}
	   }
 
	fclose(file1);
	fclose(file2);
	fclose(file3);
}
return 0;
}
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Eccoti una versione funzionante ... guardala ed adeguala alle tue esigenze
...
#include <stdio.h>
#include <string.h>
int main (){
        int i;
        char
nomefile1[100],nomefile2[100],nomefile3[100],riga1[100],riga2[100];
        FILE* file1;
        FILE* file2;
        FILE* file3;
        char* pt;
        int n;
        printf("inserisci il nome del primo file origine:");
        gets(nomefile1);
        printf("scrivi il nome del secondo file origine:");
        gets(nomefile2);
        printf("inserisci il nome del file destinazione:");
        gets(nomefile3);
        if ((file1=fopen(nomefile1,"r"))==NULL)
                printf("Il primo file non esiste \n");
        else if ((file2=fopen(nomefile2,"r"))==NULL){
                fclose(file1);
                printf ("Il secondo file non esiste\n");
        }else {
                file3=fopen(nomefile3,"w");
                /* Legge righe di (MAX) 100 caratteri ...*/
                while(fgets(riga1,100,file1)&&fgets(riga2,100,file2)){
                        /* Taglia le righe del file2 alla prima occorrenza
*/
                        /*      di '\n'! */
                        pt=strstr(riga2,"\n");
                        *pt=0;
                        n=0;
                        if(riga2[0]!=0){
                                pt=riga1;
                                while((pt=strstr(pt,riga2))!=NULL){
                                        n++;
                                        pt++;
                                }
                        }
                        fprintf(file3,"%d\n",n);
                }
                fclose(file1);
                fclose(file2);
                fclose(file3);
        }
        return 0;
}
Ciao

Innanzitutto volevo ringraziarti per aver risposto alla mia domanda,
comunque non so come mai il programma che tu mi hai inviato non
funziona. Può essere perchè usiamo due compilatori diversi (io uso
visual c)?
Precisamente l'errore me lo da nel punto segnalato....Se mi potessi
rispondere te ne sarei grato. Ciao.
  /* Legge righe di (MAX) 100 caratteri ...*/
   while(fgets(riga1,100,file1)&&fgets(riga2,100,file2)){
   /* Taglia le righe del file2 alla prima occorrenza */
                        /*      di '\n'! */
                        pt=strstr(riga2,"\n");
          *pt=0;  <<<<<<<<<<<<<<<<<<<<<<<----------------errore
                        n=0;
                        if(riga2[0]!=0){
                                pt=riga1;
                                while((pt=strstr(pt,riga2))!=NULL){
                                        n++;
                                        pt++;
                                }
                        }
                        fprintf(file3,"%d\n",n);
                }
                fclose(file1);
                fclose(file2);
                fclose(file3);
        }
        return 0;
}
-- 


>                  *pt=0; <<<<<<<<<<<<<<<<<<<<<<<----------------errore
Che errore da??? Capisco un warning ma un errore mi sembra troppo!!!
Prova in questo modo comunque ...
*pt='\0';
Ciao
Alessio C.

          *pt=0;  <<<<<<<<<<<<<<<<<<<<<<<----------------errore

 contiene '\n' ?
la funzione strstr() lavora su stringhe dunque "\n" è una stringa contenente
il carattere '\n' ... lo so che non è bello ... ma funziona :)
Ciao
Alessio C