2014-04-30 5 views
-1

Ma tâche consiste à comparer quelques mots et à trouver un caractère qui n'est pas utilisé dans les deux. Voici mon code. Mais je reçois un avertissement:Trouver un caractère unique

Et quand je suis en train de l'exécuter, il dit consolepauser.exe stopped working

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
char ret(char a[1][10],char b[3][10]) 
{ 
     int i,j,p,t; 
     for (i=0;i<1;i++) 
      for (j=0;j<10;j++) 
       for (p=0;p<3;p++) 
        for (t=0;t<10;t++) 
        { 
         if (tolower(a[i][j]==tolower(b[p][t]))) 
         { 
          p=3; 
          break; 
         } 
         if (p==2) 
          if (t==9) return tolower(a[i][j]) ; 
        } 
     return 'N'; 

} 
int main(int argc, char *argv[]) { 

    char k[3][10]={"cHaOs","TOP","blAa"}; 
    char b[1][10]={"SomeThIng"}; 
    char q[1][10]={"HaPa"}; 
    if (ret(b[1][10],k[3][10])='N') printf("No character") ; 
    else printf("%c",ret(b[1][10],k[3][10])) ; 

return 0; 

} 
+1

'if (ret (b [1] [10] , k [3] [10]) = 'N') 'vous devriez utiliser' == 'pour comparer l'égalité. – timrau

+0

@timrau thnx mais maintenant je rencontre différents problèmes. Vérifiez la description –

+1

Dans l'appel, 'b [1] [10]' est indexé hors des limites du tableau 'b', et essaie de passer un seul caractère à' ret'. Vous avez juste besoin de 'b' dans le premier argument. De même avec 'k' et' k [3] [10] '. –

Répondre

2

Vous devez passer les paramètres comme:

if (ret(b, k) == 'N') printf("No character"); 
else printf("%c", ret(b, k)); 
0

[Avertissement] en passant l'argument 1 de 'ret' fait un pointeur de l'entier sans lancer

b[1][10] est un char, pas une variable de type char [1][10], vous devez appeler ret() comme ceci: ret(b, k). D'autres sont similaires.

Note: les indices valides de char b[1][10]; sont b[0][0], b[0][1], ..., b[0][9], les index `b [1] [10] 1 sont hors-limites, et provoquera un comportement non défini.

Voici une syntaxe version fixe de votre code, vous pouvez comparer avec votre code d'origine pour découvrir d'autres problèmes dans ce:

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
char ret(char a[1][10],char b[3][10]) 
{ 
     int i,j,p,t,e,r; 
     for (i=0;i<1;i++) 
      for (j=0;j<10;j++) 
       for (p=0;p<3;p++) 
        for (t=0;t<10;t++) 
        { 
         if (tolower(a[i][j])==tolower(b[p][t])) 
         { 
          p=3; 
          break; 
         } 
         if (p==2) 
          if (t==9) return tolower(a[i][j]) ; 
        } 
     return 'N'; 

} 
int main(int argc, char *argv[]) { 
    int i,j,p,t,e,r; 
    char a,h; 
    char k[3][10]={"cHaOs","TOP","blAa"}; 
    char b[1][10]={"SomeThIng"}; 
    char q[1][10]={"HaPa"}; 
    if (ret(b,k)=='N') printf("No character"); 
    else printf("%c",ret(b,k)); 

return 0; 

} 
Questions connexes