主题 : 我在调试一个程序时总是出现这样的错误:warning:assignment makes pointer from integer without a cast. 复制链接 | 浏览器收藏 | 打印
事皆有因
级别: 新手上路
UID: 35986
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2011-01-10
最后登录: 2011-03-14
楼主  发表于: 2011-02-24 08:31

 我在调试一个程序时总是出现这样的错误:warning:assignment makes pointer from integer without a cast.

我在调试一个程序时总是出现这样的错误: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;
        }
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2011-02-24 09:24

 Re:我在调试一个程序时总是出现这样的错误:warning:assignment makes pointer from integer without a ..

只是一个警告而已,你也可以不管它
事皆有因
级别: 新手上路
UID: 35986
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2011-01-10
最后登录: 2011-03-14
2楼  发表于: 2011-02-24 13:13

 Re:我在调试一个程序时总是出现这样的错误:warning:assignment makes pointer from integer without a ..

这不是解决问题的办法啊,应该可以更加完善的。
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
3楼  发表于: 2011-02-24 15:05

 Re:我在调试一个程序时总是出现这样的错误:warning:assignment makes pointer from integer without a ..

man malloc看一下函数原型定义,你就能知道是什么原因了