m0_74422036 2022-10-23 15:04 采纳率: 0%
浏览 14

去除非十六进制字符后十六进制转十进制出错

在输入str1 时只输入十六进制数 最后转变的十进制数就是对的
但是一旦多打一个其他字符 最后十进制数就会出错
但是puts(str2) 打出的字符就是我想要的
想问问是哪儿出错了

img

#include<stdio.h>
#include<string.h>
#define N 81
#define M 81
int main()
{printf("Enter a string:");
char str1[N]={0};
char str2[M]={0};
gets(str1);

printf("New string:");
for(int k=0,j=0;k<strlen(str1);k++)
    {
    if(str1[k]>='0'&&str1[k]<='9')
        {str2[j]=str1[k];j++;}
    if(str1[k]>='a'&&str1[k]<='f')
        {str2[j]=str1[k];j++;}
    if(str1[k]>='A'&&str1[k]<='F')
        {str2[j]=str1[k];j++;}}
        puts(str2);


int i=0,t=0,number=0;
for(i=0;str2[i];i++)
    {
    if(str2[i]>='0'&&str2[i]<='9')
        t=str1[i]-'0';
    else if(str1[i]>='a'&&str2[i]<='f')
        t=str2[i]-'a'+10;
    else if(str1[i]>='A'&&str2[i]<='F')
        t=str2[i]-'A'+10;
        number=number*16+t;}
printf("number=%d",number);

    return 0;
}

```

  • 写回答

2条回答 默认 最新

  • -Undefined_ 2022-10-23 15:35
    关注

    27行:t=str1[i]-'0';
    改为 str2

    评论

报告相同问题?

问题事件

  • 创建了问题 10月23日