Hola tengo una duda al final quiero comaprar las cadenas lenguaje con cadena pero me dice que no es igual no tengo idea por que es, otra duda es en que en el do while no lo toma en cuenta para volver a a comparar es decir si le das a la opcion 1 no repite el proceso
Código (c) [Seleccionar]
#include <stdio.h>
#include <string.h>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
#include <unistd.h>
int subCadena(char *cad, char *subCad, int ini, int fin)
{
int iC, iS;
if((ini>fin)|| (ini<0) || (fin>=strlen(cad)))
return 0;
iS = 0;
for (iC = ini; iC<=fin; iC+=10){
subCad[iS] = cad[iC];
iS++;
}
subCad[iS] = '\0';
return 1;
}
char *invertir(char cadena[]) {
int longitud = strlen(cadena);
char temporal;
for (int izquierda = 0, derecha = longitud - 1; izquierda < (longitud / 2);
izquierda++, derecha--) {
temporal = cadena[izquierda];
cadena[izquierda] = cadena[derecha];
cadena[derecha] = temporal;
}
return cadena;
}
char *strstr(const char *haystack, const char *needle);
int strcmp(const char * s1,const char * s2);
int main()
{
srand(time(NULL));
int n = 1 + rand()% (3 - 1);
int n3;
int op;
int n2 = n*2;
char *alfabeto = "1599024 jonathan adrian gutierrez alvarado";
char i[7];
char w[10];
char winv[8];
char j[16];
char cadena[30];
char lenguaje[40];
char fraseN[sizeof(w) * n+1];
strcpy(fraseN, w);
char fraseM[sizeof(winv) * n2];
strcpy(fraseM,winv);
printf("El Alfabeto es: %s\n", alfabeto);
strncpy(i,&alfabeto[0],7);
i[7] = '\0';
strncpy(j,&alfabeto[8],16);
j[8] = '\0';
if(subCadena(alfabeto,w,24,35) == 0){
printf("Error");
}
if(subCadena(alfabeto,winv,24,35) == 0){
printf("Error");
}
for(int i = 0; i < n; ++i){
strcat(fraseN, w);
}
for(int i = 0; i < n2; ++i){
strcat(fraseM, winv);
}
strcat(lenguaje, i);
strcat(lenguaje, fraseN);
strcat(lenguaje, i);
strcat(lenguaje, invertir(fraseM));
strcat(lenguaje, j);
strcat(lenguaje, j);
printf("\nEste es el lenguaje: %s\n", lenguaje);
do{
printf("\nIntroduce la cadena a verificar: \n");
gets(cadena);
if (strcmp(lenguaje, cadena)== 0) {
printf("\nSon iguales", cadena);
} else {
printf("\nNo son iguales", cadena);
}
printf("\nDesea introducir otra cadena: \n1) SI \n2)NO\n");
scanf("%d", &op);
}while(op < 2);
system("\n pause");
}