//ovviamente il programma non parte, copiare in compilatore come
//codeblocks
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
const int MAXR=24;
const int MAXC=70;
FILE *f;
char mappa[MAXR][MAXC+1];
int nr=0;
int n=0;
int l, nc, i, j, k;
if (argc != 3) {
fprintf (stderr, "errore - introdurre nome file e parola da cercare\n");
exit (1);
}
if ((f=fopen(argv[1],"r")) == NULL) {
fprintf (stderr, "errore - impossibile aprire il file %s in lettura\n", argv[1]);
exit (1);
}
while (fgets(mappa[nr], MAXC+1, f) != NULL) {
// printf("riga %d: %s\n", nr, mappa[nr]);
nr++;
}
if (fclose(f) != 0)
fprintf (stderr, "avviso - impossibile chiudere il file '%s'\n", argv[1]);
nc=strlen(mappa[0]) - 1;
l= strlen(argv[2]);
for(i=0; i<nr && n==0; i++)
for(j=0; j< nc && n==0; j++) {
if (mappa[i][j] == argv[2][0]) {
// printf("%d%d\n", i,j);
for(k=1; k<l+1 && j+k<nc; k++)
if(mappa[i][j+k] != argv[2][k])
break;
if(k==l) {
n++;
printf("Parola trovata: %s - orizzontale - riga %d\n", argv[2], i+1);
printf("Inizio: colonna %d - Fine: colonna %d\n", j+1 , j+l);
}
for(k=1; k<l+1 && j-k>=0; k++)
if(mappa[i][j-k] != argv[2][k])
break;
if(k==l) {
n++;
printf("Parola trovata: %s - orizzontale - riga %d\n", argv[2], i+1);
printf("Inizio: colonna %d - Fine: colonna %d\n", j+1 , j-l+2);
}
for(k=1; k<l+1 && i+k<nr; k++)
if(mappa[i+k][j] != argv[2][k])
break;
if(k==l) {
n++;
printf("Parola trovata: %s - verticale - colonna %d\n", argv[2], j+1);
printf("Inizio: riga %d - Fine: riga %d\n", i+1 , i+l);
}
for(k=1; k<l+1 && i-k>=0; k++)
if(mappa[i-k][j] != argv[2][k])
break;
if(k==l) {
n++;
printf("Parola trovata: %s - verticale - colonna %d\n", argv[2], j+1);
printf("Inizio: riga %d - Fine: riga %d\n", i+1 , i-l+2);
}
}
}
if (n==0)
printf("Parola non trovata: %s\n", argv[2]);
return 0;
}
qqaaacazbxq
wwwcccsbrrb
edddddaeeba
dddbaccwerr
asdsfffgfgh