在C中将ASCII转换为十六进制时跳过特殊字符

在C中将ASCII转换为十六进制时跳过特殊字符,c,hex,ascii,data-conversion,C,Hex,Ascii,Data Conversion,我需要帮助获取ascii到十六进制数据输出,仅用于字母数字字符(不包括特殊字符) 非字母数字字符后的输出中断。它只包含非字母数字字符之前的输出字符串 代码: int main(无效){ 字符字[12]={8','6','7','4','1','3','0','0','1','1'}; char Outford[20]; int i,len; len=strlen(单词); printf(“输入字符串:%s\n”,word); //printf(“总长度:%d\n”,len); 如果(单词[len

我需要帮助获取ascii到十六进制数据输出,仅用于字母数字字符(不包括特殊字符)

非字母数字字符后的输出中断。它只包含非字母数字字符之前的输出字符串

代码:

int main(无效){
字符字[12]={8','6','7','4','1','3','0','0','1','1'};
char Outford[20];
int i,len;
len=strlen(单词);
printf(“输入字符串:%s\n”,word);
//printf(“总长度:%d\n”,len);
如果(单词[len-1]='\n')单词[--len]='\0';

对于(i=0;i您需要分别计算输入和输出位置

for(i = 0; i<len; i++) 
{
    if (isalnum(word[i]) == 0) {
        printf("%c is not an alphanumeric character.\n", word[i]);
    } else {
        sprintf(outword+i*2 , "%02X", word[i]);
    }
}

您需要分别计算输入和输出位置

for(i = 0; i<len; i++) 
{
    if (isalnum(word[i]) == 0) {
        printf("%c is not an alphanumeric character.\n", word[i]);
    } else {
        sprintf(outword+i*2 , "%02X", word[i]);
    }
}

对循环旋转和向数组中添加数据使用不同的变量

#include <stdio.h>

int main(void){
    char word[12] = { '8', '6','7','4','1','-','3','0','0','1','1'};
    char outword[20];
    int i, j, len;
    len = strlen(word);
    printf("Input string: %s\n", word);
    //printf("Total length: %d\n", len);
    if(word[len-1]=='\n') word[--len] = '\0';
    for(i = 0,j=0; i<len; i++) {
        if (isalnum(word[i]) == 0) {
            printf("%c is not an alphanumeric character.\n", word[i]);
        } else {
            sprintf(outword+j*2 , "%02X", word[i]);
            j=j+1;
        }
    }
    printf("Hex output:%s\n", outword); return 0;
}
#包括
内部主(空){
字符字[12]={8','6','7','4','1','3','0','0','1','1'};
char Outford[20];
int i,j,len;
len=strlen(单词);
printf(“输入字符串:%s\n”,word);
//printf(“总长度:%d\n”,len);
如果(单词[len-1]='\n')单词[--len]='\0';

对于(i=0,j=0;i使用不同的变量进行循环旋转,并将数据添加到数组中

#include <stdio.h>

int main(void){
    char word[12] = { '8', '6','7','4','1','-','3','0','0','1','1'};
    char outword[20];
    int i, j, len;
    len = strlen(word);
    printf("Input string: %s\n", word);
    //printf("Total length: %d\n", len);
    if(word[len-1]=='\n') word[--len] = '\0';
    for(i = 0,j=0; i<len; i++) {
        if (isalnum(word[i]) == 0) {
            printf("%c is not an alphanumeric character.\n", word[i]);
        } else {
            sprintf(outword+j*2 , "%02X", word[i]);
            j=j+1;
        }
    }
    printf("Hex output:%s\n", outword); return 0;
}
#包括
内部主(空){
字符字[12]={8','6','7','4','1','3','0','0','1','1'};
char Outford[20];
int i,j,len;
len=strlen(单词);
printf(“输入字符串:%s\n”,word);
//printf(“总长度:%d\n”,len);
如果(单词[len-1]='\n')单词[--len]='\0';

对于(i=0,j=0;iCode:int-main(void){char-word[12]={'8','6','7','4','1','3','0','0','1','1','1'};char-outword[20];int-i,len;len=strlen(word);printf(“输入字符串:%s\n,word”)//printf(“总长度:%d\n,len”;if(word[len-1]='\n')word[-len]='\0';for(i=0;在读取非字母数字字符时,您似乎需要中断循环的
。请看“否”,我需要跳过非字母数字字符并继续进行asciitohex数据转换,直到字符串结束。哦,是的,对不起,我颠倒了您的两行。从未出现“not”和“alphanumeric”打印?它打印以供输入字符'-'(非字母数字)。但问题是输出无法获取非字母数字字符后的字符。代码:int main(void){char word[12]={'8','6','7','4','1','1','-','3','0','0','0','1','1'};字符外部[20];int i,len;len strlen(word);printf(“输入字符串:%s\n”,word);//printf(“总长度:%d\n”,len);如果(单词[len-1]='\n')单词[--len]='\0';用于(i=0;在读取非字母数字字符时,您似乎需要中断循环的
。请看“否”,我需要跳过非字母数字字符并继续进行asciitohex数据转换,直到字符串结束。哦,是的,对不起,我颠倒了您的两行。从未出现“not”和“alphanumeric”打印?它打印以供输入字符'-'(非字母数字)。但问题是输出无法获取非字母数字字符后的字符。
#include <stdio.h>

int main(void){
    char word[12] = { '8', '6','7','4','1','-','3','0','0','1','1'};
    char outword[20];
    int i, j, len;
    len = strlen(word);
    printf("Input string: %s\n", word);
    //printf("Total length: %d\n", len);
    if(word[len-1]=='\n') word[--len] = '\0';
    for(i = 0,j=0; i<len; i++) {
        if (isalnum(word[i]) == 0) {
            printf("%c is not an alphanumeric character.\n", word[i]);
        } else {
            sprintf(outword+j*2 , "%02X", word[i]);
            j=j+1;
        }
    }
    printf("Hex output:%s\n", outword); return 0;
}