Ciao a tutti ho un prblema con questo codice...dovrei prendere in input due parole e poi vedere se la seconda è l'inverso della prima. Dovrebbe presentarsi in questo modo:
Inserire la prima parola:ciao

Inserire la seconda parolaaic

La seconda parola è l'inverso della prima

Vuoi terminare il programma (y o n)?

se digito y si deve fermare il rpogramma sennò deve continuare, nel caso la seconda non sia l'inverso della prima deve scrivere

La seconda parola è l'inverso della prima

Nel codice che ho scritto ho creato due funzioni una per prendere in input le stringhe e stampare se è o meno l'inverso e l'altra funzione invece per vedere se la seconda è l'inverso della prima.
I problemi che mi compaiono è che anche se inserisco una parola che sia l'inverso dell'altra mi stampa sempre la seconda risposta ovvero che non è l'inverso.
Inoltre alla domanda se voglio terminare e io dico che voglio smettere lui ricomincia lo stesso, chiedendomi di inserire la seconda parola e saltando di chiedermi la prima................
Questo è il codice:
codice:
/*Scrivere un programma che chieda all'utente di inserire due parole e che dia*
 *come risultato se l'una è l'inverso dell'altra*/
#include<stdio.h>
#include<string.h>

#define N 20

void inserparole();
int risultato_test(char [], char []);

int main(){
	int m;
	char risp;
	do{
		inserparole();
		printf("Vuoi terminre il programma (y o n)?\n");
		scanf("%c", &risp);
		if((int)risp==121)
			m = 0;
		else //if(risp=='n')
			m = 1;
	}while(m = 1);
}

void inserparole(){
	char primaparola[N];
	char secondaparola[N];
	int i = 0;
	int j = 0;
	int ris;
	printf("Inserire la prima parola: ");
	fgets(primaparola, sizeof(primaparola), stdin);
	printf("\n");
	while(i==strlen(primaparola))
	{
		if(primaparola[i]=='\n')
			primaparola[i]='\0';
		i++;
	}
	printf("Inserire la seconda parola: ");
	fgets(secondaparola, sizeof(secondaparola), stdin);
	printf("\n");
	while(j==strlen(secondaparola))
	{
		if(secondaparola[j]=='\n')
			secondaparola[i]='\0';
		j++;
	}
	ris = risultato_test(primaparola, secondaparola);
	if(ris==0)
		printf("la seconda parola è l'inverso della prima\n");
	else
		printf("la seconda parola non è l'inverso della prima\n");
	fflush(stdin);
}

int risultato_test(char a[], char b[])
{	
	int x, ris,m;
	m=strlen(b);
	char inverso[m];
	for(x=0; x<m-1; x++)
		inverso[x]=b[m-1-x];
	ris = strcmp(a, inverso);
	return ris;
}