Ecrire une fonction findstr (char * str, char * substr), une fonction statistique de la fréquence et la longueur de 2 sous-chaîne se produisant dans une autre chaîne. Par exemple, en supposant que la chaîne de caractères d'entrée est « asd asd asasdfg comme zx67 asd mklo », la sous-chaîne « comme », la valeur de retour de la fonction est de 6.
fonction ReadWrite () Mettre en oeuvre lu à partir du fichier in.dat les deux chaînes, et appelle la fonction findstr (), après la sortie d'un fichier dans out.dat.
#include <stdio.h>
#include <string.h>
#include <conio.h>
int findstr (char * str, char * substr)
{Int i, j, len1, len2, cnt = 0, le drapeau;
len1 = strlen (str);
len2 = strlen (substr);
for (i = 0; i <len1; i ++)
{For (j = 0; j <len2; j ++)
if (str [i + j] == substr [j]) flag = 1;
else {flag = 0; break;}
if (drapeau == 1) cnt ++;
}
retourner cnt;
}
principale()
{
carbonisation str [81], substr [3];
int n;
clrscr ();
printf ( "Entrez chaîne d'origine:");
gets (str);
printf ( "sous-chaîne de caractères entrée:");
gets (substr);
puts (str);
puts (substr);
= Findstr (str, substr);
printf ( « n =% d \ n », n);
Lire écrire() ;
}
Lire écrire()
{
carbonisation str [81], substr [3], ch;
int n, len, i = 0;
FICHIER * rf * wf;
rf = fopen ( « in.dat », « r »);
wf = fopen ( « out.dat », « w »);
while (i <25) {
fgets (str, 80, RF);
fgets (substr, 10, RF);
len = strlen (substrat) - 1;
ch = substr [uniquement];
if (ch == '\ n' || ch == 0x1a) substr [len] = 0;
= Findstr (str, substr);
fprintf (wf, « % d \ n », n);
i ++;
}
fclose (RF);
fclose (Wf);
}