2013-03-08 1 views
2

Y at-il un moyen que je peux supprimer les espaces blancs lors de la comparaison de deux chaînes. L'affectation consiste à créer un palindrome insensible à la casse et à ignorer les espaces blancs. Jusqu'ici j'aiC Programme - Palindrome avec fonctions - presque entièrement terminé un petit numéro

void cmpNoCase(char str1[], char str2[]){ 
    if(strcasecmp(str1, str2)==0){ 
     printf ("%s is a palindrome.\n", str2); 
    } else { ("%s is NOT a palindrome.\n", str2); 
} 
return; 
} 

et à l'intérieur principal j'ai cette boucle pour inverser la première chaîne entrée de l'utilisateur.

for (i=0, j= strlen(input2)-1; i < j; i++, j--){ 

    index=input2[i]; 
    input2[i]=input2[j]; 
    input2[j]=index; 
} 

Note: J'ai une autre fonction qui compare les deux chaînes avec sensibilité à la casse, mais prend en compte les espaces lorsque l'on compare l'indice de la chaîne (qui est le palindrome entré). La seule différence que j'ai dans les fonctions et leurs boucles for est le 'strcmp' pour la 1ère fonction, le 2ème étant 'strcasecmp' pour ignorer la sensibilité à la casse.

+0

Ceci est la deuxième concernant la chaîne que j'ai appelé entré est input2. – user2142053

+0

Essayer de comprendre votre Q ... Et si input1 = "A b c d" et input2 = "dcba", devront-ils être déclarés comme palindrome selon vos besoins? – Vikram

Répondre

0

vous pouvez essayer d'écrire votre propre fonction de comparaison. Ne aimez while(i<strlen(yourstr){// your logic for comparing the string character by character} plus précisément while(i<strlen(yourstr)){char a=yourstr[i]; if(a=' ') {continue;}; // rest of your comparison code} sinon vous pouvez faire comme: while((a=yourstring[i])!='\n'){i++; if(a=' ') {continue;}