我有一个函数接收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;
}
答案 0 :(得分:4)
您收到警告,因为该函数是在main
之后定义的,并且没有原型。
将功能移至main
之前,或添加以下行:
char* DoSomething (int num);
现在警告将会消失,您可以按自己喜欢的方式打印字符串,例如
printf("%s\n", a);
注1:您返回的字符串不会以空值终止。
注2:由于您在函数中使用malloc
,因此需要在free
的结果上调用main
。