Arrays 我在用C语言打印字符数组时遇到问题
问题是下面的代码不打印任何内容。我非常努力,使用不同的方法,我使用固定大小的数组,我尝试从一个void函数打印数组,我尝试printf和sprintf,我尝试使用静态s变量,我尝试循环数组和打印字符。结果总是一样的,0个错误,0个警告,从不打印结果。大约30秒后,程序自动终止,并输出以下输出: 将56转换为ascii: 返回的进程-1073741819(0xC0000005)执行时间:4.763秒 按任意键继续 下面是代码(我可能使用了太多的include,但这是因为我尝试了所有方法):Arrays 我在用C语言打印字符数组时遇到问题,arrays,c,string,return,Arrays,C,String,Return,问题是下面的代码不打印任何内容。我非常努力,使用不同的方法,我使用固定大小的数组,我尝试从一个void函数打印数组,我尝试printf和sprintf,我尝试使用静态s变量,我尝试循环数组和打印字符。结果总是一样的,0个错误,0个警告,从不打印结果。大约30秒后,程序自动终止,并输出以下输出: 将56转换为ascii: 返回的进程-1073741819(0xC0000005)执行时间:4.763秒 按任意键继续 下面是代码(我可能使用了太多的include,但这是因为我尝试了所有方法): #包括
#包括
#包括
#包括
#包括
无效反向(字符s[])
{
int c,i,j;
对于(i=0,j=strlen(s)-1;i0);
if(符号<0)
s[i++]='-';
s[i]='\0';
反面;
返回s;
}
int main()
{int n;
n=56;
printf(“将%d转换为ascii:\n”,n);
char*buf=ITOScii(n);
sprintf(buf,“%s\n”);
返回0;
}
是的,问题是y++的东西。事实上,我从一个带有勘误表的K&R版本复制了这段代码。在这本书中,我发现Y++和我盲目地相信这个函数,在调试中我从未考虑过这个问题是由于指针使用不当或其他原因造成的。
当然,代码可能会得到改进。printf比sprintf好,我还必须用malloc释放分配的内存。我还必须删除额外未使用的include
谢谢你的评论 代码至少存在以下问题:
int
。建议至少12个。可能sizeof(int)*字符位/3+3
用于近似概括
n=-n当n==INT\u MIN
时,code>为UB
//for(i = 0, j = strlen(s)-1; i < j; i++,j++){
for(i = 0, j = strlen(s)-1; i < j; i++,j--){
//for(i=0,j=strlen(s)-1;i
sprintf in用于打印到字符串中,如果要打印字符串,请尝试
printf(“%s\n”,buf);
在循环增量中,j++
应该是j--
。否则它将直接从数组的末尾走出来。我猜您的意思是for(I=0,j=strlen(s)-1;I
因为如果i
和j
不断增加,那么循环将永远不会结束。OT:sprintf(buf,“%s\n”)
在这里肯定是错误的。您需要printf(“%s\n”,buf)
。32位INT\u MIN
所需的带终止零的字符串长度为12个字符
//for(i = 0, j = strlen(s)-1; i < j; i++,j++){
for(i = 0, j = strlen(s)-1; i < j; i++,j--){