Programı yazan kişiye saygılı olmak açısından, kodlarda değişiklik yapılmamıştır.


Kod:
/*
yazan: Eren Ezgü <erenezgu at gmail.com>
derleyici: Dev C++      
*/

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main(){
    
    FILE *giris,*cikis;//giri&#254;-ç&#253;k&#253;&#254; dosyalar&#253;
    int m,n; //kelime uzunluklar&#253;
    int i,j,k;//döngü de&#240;i&#254;kenleri
    int max=0;//en büyük uzunluk
    char *kelime1,*kelime2,*sonuc,*deneme;//stringler
    
    giris=fopen("yazi.gir","r");
    if(!giris){
               puts("HATA: yazi.gir dosyasi acilamadi");
               return 1;
    }
    cikis=fopen("yazi.cik","w");
    if(!giris){
               puts("HATA: yazi.cik dosyasi ac&#253;lamadi");
               return 1;
    }           

    fscanf(giris,"%d\n%d\n",&m,&n);
    printf("m=%d\nn=%d\n",m,n);
    
    kelime1=(char*)malloc( sizeof(char)*(m+1) );//stringler için tahsisatlar
    if(!kelime1) { puts("HATA: Bellek yetersiz!"); return 1; }
    kelime2=(char*)malloc( sizeof(char)*(n+1) );
    if(!kelime1) { puts("HATA: Bellek yetersiz!"); return 1; }
    sonuc=(char *) malloc( (m<n?m:n)+1 );//sonuc için gereken en büyük uzunluk
    if(!sonuc) { puts("HATA: Bellek yetersiz!"); return 1; }
    deneme=(char *) malloc( (m<n?m:n)+1 );//deneme için gereken en büyük uzunluk
    if(!sonuc) { puts("HATA: Bellek yetersiz!"); return 1; }
    
    
    for(i=0;i<m;i++)
               fscanf(giris,"%c",&kelime1[i] );
    kelime1[m]='\0';           
    fscanf(giris,"\n");//2.kelimeye geçi&#254;
    for(i=0;i<n;i++)
               fscanf(giris,"%c",&kelime2[i] );                              
    kelime2[n]='\0';
    printf("ilk kelime:%s\nikinci kelime:%s\n",kelime1,kelime2);
    //okumalar yap&#253;ld&#253;***********************************************
    // i origin döngüsü j uzunluk döngüsü
    //ör:  'ibeslim\0'  'onbeslik\0'
    for(i=0;i<strlen(kelime1);i++){//origin döngüsü                                   
            for(j=1;j<=(strlen(kelime1)-i );j++){//okunacak karakter say&#253;s&#253;
                  for(k=0;k<j;k++){//karakterlerin okunmas&#253;
                       deneme[k]=kelime1[i+k];  
                  }
                  deneme[k]='\0';//sonland&#253;r&#253;c&#253; eklenmesi
                  if( strstr(kelime2,deneme)&&(j>max) ){//e&#240;er parça 2. stringte varsa ve uzunluk maxdan büyükse
                      max=j;
                      sprintf(sonuc,"%s",deneme);                      
                  }    
            }
              
    }                                 
    printf("Ortak : %s\n",sonuc);
    fprintf(cikis,"%d\n%s\n",max,sonuc);    
    
    
    fclose(giris);
    fclose(cikis);
    return 0;     
}