gpt4 book ai didi

c - 运行数字转换器程序时出现段错误

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

我编写了以下程序,用于将十进制数更改为小于或等于 16 的任何其他基数。

我一直遇到段错误。我无法弄清楚我的错误。请帮我解决这个问题。

程序:

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



void reverse(char s[]){
int c,i,j;

for (i=0,j=strlen(s)-1;i<j;i++,j++){
c= s[i];
s[i]=s[j];
s[j]=c;
}
}


void itob(int n, int b){

int i=0,index;
char s[50];
char s2[17]="0123456789ABCDEF";

index = n % b ;
do {
s[i++]=s2[index];
} while((n/=b)>0);
s[i]='\0';
reverse(s);
printf("%s\n",s);
}

int main (void){

int n,b;
char s[50];
printf("enter the number");
scanf("%d",&n);
printf("enter the base");
scanf("%d",&b);
itob(n,b);
return 0;
}

最佳答案

这个:

for (i=0,j=strlen(s)-1;i<j;i++,j++){
c= s[i];
s[i]=s[j];
s[j]=c;
}

是一个无限循环。你可能想要:

for (i = 0, j = strlen(s) - 1; i < j; i++, j--){ /* j-- instead of j++ */
c = s[i];
s[i] = s[j];
s[j] = c;
}

你有一个逻辑错误。这个

index = n % b ;
do {
s[i++]=s2[index];
} while((n/=b)>0);

应该是

do {
index = n % b;
s[i++] = s2[index];
} while((n /= b) > 0);

关于c - 运行数字转换器程序时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32219790/

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