Code:
#include <stdio.h>
#include <string.h>
#define ROWS 10
#define COLUMNS 10
void assignSearch( FILE *wrdsearch , char wordsearch[ROWS][COLUMNS] );
int findWord( char word[], char wordsearch[][COLUMNS] );
int findDiag ( char wordsearch[][COLUMNS] , char input[] );
int main (void)
{
FILE *wrdlist, *wrdsearch;
char input[11];
char wordsearch[ROWS][COLUMNS];
int test , notfound;
if((wrdsearch = fopen("wordsearch.dat","r")) == NULL)
printf("file failed to open");
if((wrdlist = fopen("wordlist.dat","r")) == NULL)
printf("file failed to open");
assignSearch(wrdsearch,wordsearch);
printf("\n\nenter a word\n");
gets(input);
test = findWord(input,wordsearch);
if( test != 0)
findDiag(wordsearch,input);
return 0;
}
void assignSearch( FILE *wrdsearch , char wordsearch[ROWS][COLUMNS] )
{
int i , j;
for( j = 0; j < COLUMNS ; j++ )
{
for ( i=0 ; i <= ROWS ; i++)
{
wordsearch[i][j] = fgetc(wrdsearch);
}
}
for( j = 0; j < COLUMNS ; j++ )
{
for ( i=0 ; i <= ROWS ; i++)
{
printf("%c",wordsearch[i][j]);
}
}
}
int findWord( char input[], char wordsearch[][COLUMNS] )
{
int i , j , m , k;
char tempd[11];
char tempdback[11];
char tempa[11];
char tempaback[11];
char *start , *end;
printf("\n\n\n");
for ( i = 0 ; i < ROWS ; i ++ )
{
for( j = 0 ; j < COLUMNS ; j++ )
{
/************************************ down ********************************************/
tempd[j] = wordsearch[i][j];
start = strstr (tempd,input);
if( start!=NULL)
{
end = start + strlen(input) - 1;
printf("starts at [%i,%i], ends at [%i,%i]\n",i,(start - tempd),i,(end-tempd));
return 0;
break;
}
else
;
/**************************************************************************************/
/********************************* down backwards (up) ********************************/
for(k=0 , m = 10 ; k<ROWS , m >= 0 ; k++ , m--)
{
tempdback[k] = tempd[m];
}
start = strstr(tempdback,input);
if( start!=NULL)
{
end = start + strlen(input) - 1;
printf("starts at [%i,%i], ends at [%i,%i]\n",
i, (COLUMNS - (start - tempdback)),i,(COLUMNS - (end-tempdback)));
return 0;
break;
}
else
;
/**************************************************************************************/
/******************************** across **********************************************/
tempa[j] = wordsearch[j][i];
start = strstr (tempa,input);
if ( start != NULL )
{
end = start + strlen(input) - 1;
printf("starts at [%i,%i], ends at [%i,%i]\n",
(start - tempa),i,(end - tempa),i);
return 0;
break;
}
else
;
/**************************************************************************************/
/****************************** across backwards **************************************/
for(k=0 , m = 10 ; k<ROWS , m >= 0 ; k++ , m--)
{
tempaback[k] = tempa[m];
}
start = strstr(tempaback,input);
if( start!=NULL)
{
end = start + strlen(input) - 1;
printf("starts at [%i,%i], ends at [%i,%i]\n",
i, ( ROWS - (start - tempaback)) , i , ( ROWS - (end-tempaback)));
return 0;
break;
}
else
;
/*************************************************************************************/
}
}
}
int findDiag ( char wordsearch[][COLUMNS] , char input[] )
{
int i;
int j;
int k;
char *start , *end;
char tempdiag[11];
for ( i = 0 ; i < ROWS ; i ++ )
{
for( j = 0 ; j < COLUMNS ; j++ )
{
if(wordsearch[i][j] == input[0] )
{
for( k =0 ; k < ROWS ; k++ )
{
while( input[k] == wordsearch[i+k][j+k] )
{
start = strstr(tempdiag,input);
if(start != NULL)
{
end = start + strlen(input) - 1;
printf("starts at [%i,%i], ends at [%i,%i]\n",
i,j,(i+(end-tempdiag)),(j+(end-tempdiag)));
return 0;
break;
}
else
;
}
}
}
else
;
}
}
}
To the extent of my knowledge, all but the diagonal work fine. If you can see something obvious wrong with it or some simple mistake , leave your two cents. Thanks!!!