c - 如何在数组中连续写入

标签 c arrays binary hex

我正在制作一个二进制/十六进制数计算器,用户可以在其中插入一个 8 位十六进制数,我需要将其转换为二进制数并在运算后打印出来。我的问题是,在我读取一个数组中的十六进制数并尝试将其转换并将其存储在另一个数组中之后,在我打印它之后我得到了奇怪的字符(V<#■ jst]tt)

这是我的部分代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <float.h>
    #include <proyecto.h>
    #include <string.h>
    int main () {
      char op,bin[31],hex[100],hex2[100];
      int sizeh,repeat1,repeat2,n,z,i;
        printf("Hexadecimal: ");
        scanf("%s",hex);
        convert(hex,bin,n);

转换函数:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <proyecto.h>
#include <string.h>
void convert(char hex[],char bin[],int n){
int i,b;
printf("\nEquivalent binary value: ");
for(i=0;i<8;i++){
switch(hex[i]){
case '0': scanf("0000",bin); break;
case '1': scanf("0001",bin); break;
case '2': scanf("0010",bin); break;
case '3': scanf("0011",bin); break;
case '4': scanf("0100",bin); break;
case '5': scanf("0101",bin); break;
case '6': scanf("0110",bin); break;
case '7': scanf("0111",bin); break;
case '8': scanf("1000",bin); break;
case '9': scanf("1001",bin); break;
case 'A': scanf("1010",bin); break;
case 'B': scanf("1011",bin); break;
case 'C': scanf("1100",bin); break;
case 'D': scanf("1101",bin); break;
case 'E': scanf("1110",bin); break;
case 'F': scanf("1111",bin); break;
case 'a': scanf("1010",bin); break;
case 'b': scanf("1011",bin); break;
case 'c': scanf("1100",bin); break;
case 'd': scanf("1101",bin); break;
case 'e': scanf("1110",bin); break;
case 'f': scanf("1111",bin); break;
default:  printf("\nInvalid hexadecimal digit %c ",hex[i]);
}
}
printf("%s",bin);
}

函数的要点是在二进制数组中连续写入字符,所以如果我键入 AB,数组将首先插入 1010,然后在位置 5 将继续写入 1011,但不知何故我无法让它工作

最佳答案

可以将scanf("0000",bin);改为strcat(bin, "0000");等。 注意这个方法比较繁琐,bin必须足够大并且初始化为空字符串,eg:

char bin[33] = "";

关于c - 如何在数组中连续写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415604/

相关文章:

c - 简单的 C 项目来显示重复的数字

java - 为什么数组被初始化为默认值而不是 java 中的 arraylist?

C++ 二进制识别( list )

c - 交换两个整数而不产生第三次溢出

c - 按字母顺序对 C 原型(prototype)进行排序的 Unixy 方式

c++ - "glibc detected - free(): invalid pointer - Program received signal SIGABRT, Aborted"

Javascript:如何根据数据对象数组检查混合用户输入?

Python int 到二进制字符串?

python - 将1列数据转换为多热编码

条件检查替换为按位运算符