C编程十六进制到字符

C编程十六进制到字符,c,char,hex,C,Char,Hex,我想做的是让用户输入一个十六进制数字,然后这个数字将被转换成一个字符,并显示在监视器上。这将继续,直到遇到一个EOF。我完成了与此相反的代码,将字符转换成十六进制数字。我遇到的问题是如何从我为char2hex程序使用的getchar()用户那里获取十六进制数。十六进制数有类似的函数吗 这是char2hex程序的代码 #include <stdio.h> int main(void) { char myChar; int counter = 0; while

我想做的是让用户输入一个十六进制数字,然后这个数字将被转换成一个字符,并显示在监视器上。这将继续,直到遇到一个
EOF
。我完成了与此相反的代码,将字符转换成十六进制数字。我遇到的问题是如何从我为
char2hex
程序使用的
getchar()
用户那里获取十六进制数。十六进制数有类似的函数吗

这是char2hex程序的代码

#include <stdio.h>
int main(void) {
    char myChar;
    int counter = 0;

    while (EOF != (myChar = getchar())) {
        /* don't convert newline into hex */
        if (myChar == '\n')
            continue;
        printf("%02x ", myChar);

        if (counter > 18) {
            printf("\n");
            counter = -1;
        }
        counter++;
    }
    system("pause");
    return 0;
}
#包括
内部主(空){
char-myChar;
int计数器=0;
而(EOF!=(myChar=getchar()){
/*不要将换行符转换为十六进制*/
如果(myChar=='\n')
继续;
printf(“%02x”,myChar);
如果(计数器>18){
printf(“\n”);
计数器=-1;
}
计数器++;
}
系统(“暂停”);
返回0;
}
这就是我想让程序做的,除了它会持续做这件事

#include <stdio.h>
int main() {
    char myChar;

    printf("Enter any hex number: ");
    scanf("%x", &myChar);

    printf("Equivalent Char is: %c\n", myChar);

    system("pause");

    return 0;
}
#包括
int main(){
char-myChar;
printf(“输入任何十六进制数:”);
scanf(“%x”、&myChar);
printf(“等效字符为:%c\n”,myChar);
系统(“暂停”);
返回0;
}
任何帮助都将不胜感激
谢谢

因为字符和整数可以在C中互换使用,所以您可以使用以下代码:

int main(void) {
    int myChar;

    printf("Enter any hex number: ");
    scanf("%x", &myChar);

    printf("Equivalent Char is: %c\n", myChar);

    system("pause");

    return 0;
}
如果您想让它循环,那么只需将它括在while循环中,如示例代码所示

编辑:您可以在此处试用工作代码

\include
#包括
#包括
内部主(空){
int-myChar;
int计数器=0;
char buff[3]={0};
而(EOF!=(myChar=getchar()){
if(isxdigit(myChar)){
buff[counter++]=myChar;
如果(计数器==2){
计数器=0;
myChar=strtol(buff,NULL,16);
putchar(myChar);
}
}
}
printf(“\n”);
系统(“暂停”);
返回0;
}

从技术上讲,这会导致未定义的行为(尽管它可以在通用系统上工作),真的吗?为什么呢我一直被教导你可以使用字符作为int(反之亦然),只要它在255以下,就不需要强制转换。我想一个if语句可以解决这个问题
if(myChar<256){do code here;}
scanf
with
%x
要求参数
char myChar完全
无符号int*
-->
int-myChar用于
EOF
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(void) {
    int myChar;
    int counter = 0;
    char buff[3] = {0};

    while (EOF != (myChar = getchar())) {
        if(isxdigit(myChar)){
            buff[counter++] = myChar;
            if(counter == 2){
                counter = 0;
                myChar = strtol(buff, NULL, 16);
                putchar(myChar);
            }
        }
    }
    printf("\n");
    system("pause");
    return 0;
}