Ciao a tutti!
Scusate il ritardo nella risposta, ma ho avuto dei problemi con la connessione.
Grazie al codice di candaluar ho risolto il problema, adesso l'immissione dei caratteri funziona correttamente.
Vorrei chiedervi solo un'informazione sul resto dell'esercizio:
#include <stdio.h>
#include <string.h>
#define dim1 100
#define dim2 3
int main ()
{
int i=0, l=0, cont=0, tot1=0, tot2=0;
char s1[dim1+1], s2[dim2+1], c, d;
printf("Inserisci la prima sequenza di %d caratteri:\n\t", dim1);
fflush(stdin);
fgets(s1,dim1+1,stdin);
s1[dim1] = '\0';
printf("Inserisci la seconda sequenza di %d caratteri:\n\t", dim2);
fflush(stdin);
fgets(s2,dim2+1,stdin);
s2[dim2] = '\0';
printf("\nPrima sequenza: %sSeconda sequenza: %s", s1, s2);
for (i=0;i<dim1;i++)
{
if (s1[i]!='\n')
tot1++;
}
for (i=0;i<dim2;i++)
{
if (s2[i]!='\n')
tot2++;
}
printf("\nTotale caratteri prima sequenza: %d -- Totale caratteri seconda sequenza: %d", tot1, tot2);
for (i=0;i<dim1-dim2;i++)
{
if (s1[i]==s2[i] && s1[i+1]==s2[i+1] && s1[i+2]==s2[i+2])
cont++;
if (s1[i]=='\n')
break;
}
printf("\n\nIn totale la scritta: %s compare %d volte nella scritta: %s", s2, cont, s1);
return 0;
}
Questo è il codice che ho scritto per risolvere tutto l'esercizio, però il programma sbaglia a calcolare quante volte la stringa s2 compare in s1. Ad esempio se immetto come prima stringa:
ATATATA
e come seconda:
ATA
il programma conta che
ATA è stata inserita 2 volte al posto che 3. Addirittura se immetto la stringa di esempio del mio esercizio, al posto di avere come risultato 5 ho 1.
Penso che il problema sia qui:
for (i=0;i<dim1-dim2;i++)
{
if (s1[i]==s2[i] && s1[i+1]==s2[i+1] && s1[i+2]==s2[i+2])
cont++;
if (s1[i]=='\n')
break;
}
Io ho pensato di fare un ciclo for, così controllo se ogni carattere della stringa 2 corrisponde alla stringa 1, se è così allora aumento il contatore altrimenti passo al carattere successivo.
Come mai che non ottengo mai il risultato corretto?
Grazie mille
Ciaoo