返回char *

时间:2017-07-01 19:35:21

标签: c string pointers

我有一个函数接收int并返回一个指向字符串数组的指针:

char* DoSomething (int num);

但我不明白如何处理它。基本上我想打印我从函数中获得的字符串。 但在主要方面我得到一个警告:从不兼容的指针类型分配。 这是我的主要内容:

int main()
{
    int num = 12345;
    char* a;
    a = DoSomething(12345);
    return 0;
}

更新。我不想放长代码,但根据您的要求添加。 该函数在单独的c文件中定义。

/* conver int to String */
char* IntToString (int num)
{
    int i;
    int sign = 1;
    int len;
    int begin = 0;
    char* str = malloc (sizeof(char)*30);  
    if (num<0)
    {
        sign = -1;
        num = num*(-1);
    }
    len = CountDigits(num);
    if (sign == -1)
    {
        str[0]='-'; 
        begin = 1;
    }
    int newLen = len;
    for (i=0; i<len; i++)
    {
        int digit;
        char digitChar;
        int modul;

        digit = num/(pow(10, newLen-1));
        digitChar = digit + ASCII_ZERO;
        str[i+begin] = digitChar;
        modul = pow(10, newLen-1);
        num = num % modul;
        newLen--;
    }
    return str;
}

然后在主要的我试图调用函数:

int main()
{
    int num = 12345;
    char* a;
    a = IntToString(12345);
    return 0;
}

1 个答案:

答案 0 :(得分:4)

您收到警告,因为该函数是在main之后定义的,并且没有原型。

将功能移至main之前,或添加以下行:

char* DoSomething (int num);

现在警告将会消失,您可以按自己喜欢的方式打印字符串,例如

printf("%s\n", a);

注1:您返回的字符串不会以空值终止。

注2:由于您在函数中使用malloc,因此需要在free的结果上调用main