2016-05-05 42 views
-1

警告:キャストのない整数からのポインタの代入 - > auxcandidate = alpha [POS]警告:Cプログラムのキャストなし整数からのポインタの代入[-Wint-conversion]

は、ここに私のコードです:

char* getkey(int minimo, int maximo, int alphalen, int index, char alpha[]); 
int main() 
    { 
     int minimo = 2; 
     int maximo = 2; 
     char *alpha = "abc"; 
     int alphalen = strlen(alpha); 

     char *candidata; 

     printf("La candidata es: "); 
     candidata = getkey(minimo, maximo, alphalen, 5, alpha); 
     //printf(" %c", candidata); 
     //if (candidata = "bc") 
     //{} 
     return 0; 
    } 

    char* getkey (int minimo, int maximo, int alphalen, int index, char alpha[]) 
    { 
     int cociente, residuo, cont; 
     int i = 0; 
     char cand[maximo+1]; 

     char* auxcandidate; 

     while (index != 0) 
     { 
      cociente = index/alphalen; 
      residuo = index%alphalen; 
      cand[i] = residuo; 
      index = cociente; 
      i+=1; 
     } 

     for (cont=i-1; cont>=0; cont--) 
     { 
      int pos = cand [cont]; 
      auxcandidate = alpha[pos];  
     } 
     return auxcandidate; 
    } 

誰かがこれらの警告を説明できますか?

auxcandidate = alpha[pos]; 

アルファ(posが)アドレス(ポインタ)が、その場所での値ではなく、あなたが実際にはので、char型のポインタに書き込むしようとしている。

+1

を指すようにしたい場合は自分でこれを確認する:「'何をauxcanidate'される' alpha'は何 'アルファとは何ですか? [pos] '?"すすぎ、繰り返します。 –

+0

[代入は、キャストのない整数からポインタを作成する]の可能な複製です(http://stackoverflow.com/questions/2074009/assignment-makes-pointer-from-integer-without-cast) –

+0

なぜあなたの関数は複製されていますか? –

答えて

4

次の行に注意してください。あなたはキャスティングを行い、それは警告のソースです

0

@dear_tzviと同様に、その行は警告のソースです。

あなたが使用する必要があります

auxcandidate = &alpha[pos]; 

をあなたはauxcandidate変数はそのインデックス

+0

auxcandidate変数が "bc"を返すようにします。私はそれをする方法を知らない。 – user5672720

+0

私はあなたにプログラム全体を読まなかったが、posが1のときに割り当てが行われると、それはうまくいく –

関連する問題