Salve, il mio problema riguarda un vettore di stringa.
Devo scrivere un programma che prenda in input un file contenente stringhe e una stringa.
Il programma deve stampare tutte le stringhe contenute nel vettore di stringhe(dictionary) maggiori dell'altra stringa(str) rispetto all'ordine lessicografico.
Il mio programma però confronta solo la stringa di prova con la prima stringa del vettore dictionary, stampando di conseguenza o tutta la lista o niente.
Dove ho sbagliato?
#include <stdio.h>
#define MAX 100
int lex_less(char x[],char y[][MAX],int c);
int main()
{
char dictionary [MAX][MAX];
char str[MAX];
int dim=0,i;
FILE *fp;
fp=fopen("Stringhe.txt","r");
while(!feof(fp))
{
fscanf(fp,"%s",dictionary[dim]);
dim++;
}
printf("Inserisci stringa str:\n");
scanf("%s",str);
for(i=0;i<dim;i++)
{
if(lex_less(str,dictionary,dim)==1)
{
printf("%s\n",dictionary[i]);
}
}
}
int lex_less(char x[],char y[][MAX],int c)
{
int i,j;
for(i=0;i<c;i++)
{
for(j=0;j<MAX;j++)
{
if(x[j]<y[i][j])
{
return 1;
break;
}
else if(x[j]>y[i][j])
{
return 0;
break;
}
}
}
}