我在调试一个程序时总是出现这样的错误:warning:assignment makes pointer from integer without a cast.
出现的位置是:
int reverse(char *str)
{
static char *tmp;
int i, j;
i = 0;
j = (strlen(str) - 1);
tmp = malloc(strlen(str));//这里出现warning:assignment makes pointer from integer without a cast.
memset(tmp, 0, strlen(str));
/*Copy string to tmp*/
memcpy(tmp, str, strlen(str));
for(; i < strlen(str); i++)
{
str = tmp[j];
j--;
}
return 0;
}
不知哪位能帮忙修改一下啊?谢谢。
源程序如下:
/*字符型数据转换为十六进制数据*/
#include<stdio.h>
int main()
{
int n, m;
char src[]="h2@h3343433{";
char src2[]="??2丂";
unsigned char dest[100];
void ConvertToHex(unsigned char *hex , unsigned int decimal);
int reverse(char *str);
for(n=0;n<strlen(src);n++)
{
m = src[n];
ConvertToHex(dest, m);
reverse(dest);
printf("%s",dest);
printf(" ");
}
printf("\n");
}
void ConvertToHex(unsigned char *hex , unsigned int decimal) //将打印文件转换为十六进制文件
{
int rem,k=0,p;
p=decimal;
while(decimal!=0)
{
rem=decimal%16;
decimal=decimal/16;
if(rem>=10)
hex[k++]=65 + rem - 10; //65 means A
else if(rem<=9)
hex[k++]=rem+48; //48 means 0
}
hex[k++]='\0';
if(p==0)
strcpy(hex,"00");
else if(p<16)
strcat(hex,"0");
}
int reverse(char *str)
{
static char *tmp;
int i, j;
i = 0;
j = (strlen(str) - 1);
tmp = malloc(strlen(str)); /*分配连续strlen(str)个字节的字符存储空间并返回首地址*/
memset(tmp, 0, strlen(str));
/*Copy string to tmp*/
memcpy(tmp, str, strlen(str));
for(; i < strlen(str); i++)
{
str = tmp[j];
j--;
}
return 0;
}