2015-09-27 35 views
-5

说明:C警告:传递“的strcpy”的论点2从整数指针不进行强制转换

只是想AA字符转换为十六进制,但我不断收到这个错误,我不知道如何解决这

问题:

warning: passing argument 1 of ‘strtol’ makes pointer from integer without a cast[[email protected] lab3]$ vi lab3.c 

CODE:

void print_group(char array[]) 
{ 
    int num,a; 
    char ch[10]; 

    printf("here ");  
    for (a = 0 ; a < 8 ; a++) 
    { 
     strcpy(ch,array[3]); 
     num = strtol(ch,0,16);//------------------THIS IS IT// 
     printf("%i",num); 
    } 
} 
+2

'array [3]'不是地址。 –

+2

你觉得模糊不清的错误是什么?你传递一个整数(一个char是一种整数)作为strtol的第一个参数而不是一个指针。不要这样做。 –

+0

使用'array + 3'或使用'&array [3]'作为第二个参数。第二个参数需要是一个char *或char指针,而不是传递一个'char'。而这个'char'又被提升为一个整数。你在文件中有'#include '来声明'strcpy()'函数的原型吗? –

回答

1

你是PA ssing char其中char *预计,也许

strcpy(ch, &array[3]); 

但是从你的代码,它似乎像这样,是你真正需要

num = strtol(&array[3], 0, 16); 

如果strcpy()在这种情况下工作,那么这将正常工作。

相关问题