gpt4 book ai didi

c - 警告 : initialization makes integer from pointer without a cast

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:25 24 4
gpt4 key购买 nike

我只是在写一个像IntegerToString一样使用递归的函数,但是GCC来了

"its.c: In function ‘ITS’:
its.c:26:3: warning: initialization makes integer from pointer without a cast [enabled by default]
its.c:26:3: warning: (near initialization for ‘buffer[0]’) [enabled by default]
its.c:26:3: warning: initialization makes integer from pointer without a cast [enabled by default]
..."

我不知道如何解决它。请帮助我。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char *Change(char *buffer,int n)
{
if(n==0){
return(buffer);
}else{
int left=n%10;
n=n/10;
int len=strlen(buffer);
buffer[len-1]='\0';
char new_array[30]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
printf("%s\n",new_array);
new_array[0]=left+'0'; printf("NEW:%s\n",new_array);
strcat(new_array,buffer); printf("TEST:%s\n",new_array);
return(Change(new_array,n));
}
}

char *ITS(int n)
{
char buffer[30]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};;
return(Change(buffer,n));
}

int main()
{
int n=1729;
char *buffer=(char*)malloc(30*sizeof(char));
if(buffer==NULL)
{
printf("Malloc Fault!\n");
exit(-1);
}
buffer=ITS(1729);
printf("%s\n",buffer);

return 0;
}

最佳答案

正如评论中指出的那样,使用函数并从函数返回本地存储是不安全的。更改 ITS() 和 Change() 的签名,以便它们从 main() 获取缓冲区:

char * Change(char * srcBuffer, int n) ;
char * ITS( char * srcBuffer, int n) ;

int main()
{
int n= 1729 ;
char buffer[30] ;
printf("%d = %s\n", n, ITS( buffer, n)) ;
}

如果你很聪明,那么你可以让 Change 返回一个与 ITS 不同的值,并用它来告诉每个级别下一个数字的去向。

如果您在 ITS 的签名上受到限制(请参阅注释),则在 ITS 中使用静态内存。它不是线程安全的,但它会以其他方式工作:

char * Change(char * srcBuffer, int n) ;
char * ITS( int n )
{
static char buffer[30] = { 0 } ;
return Change( buffer, n) ;
}

int main()
{
int n= 1729 ;
printf("%d = %s\n", n, ITS( n)) ;
}

关于c - 警告 : initialization makes integer from pointer without a cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20211208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com