【发布时间】:2019-02-18 08:39:24
【问题描述】:
我正在根据输入的字符将特定的十六进制转换为十进制,然后再转换为二进制。我正在尝试以输入字符的形状打印 1 和 0 的矩阵。当我打印第一个字符时,它会横向输出。我怎样才能把它垂直?
我尝试找到一种方法,在一行列上仅打印每个二进制的第一个数字,在第二行列上打印第二个数字,依此类推,但什么也没有。该代码需要使用包含所有十六进制的外部文件。从文件中提取时,A 的十六进制为十进制形式:126、17、17、17、126。然后我将它们转换为二进制整数:01111110、00010001、00010001、00010001 和 01111110。然后打印出来一个 5x7 矩阵。它应该产生一个垂直的 A,而是产生一个水平的 A。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "font5x7.h"
void DecToBin (int newBin[], char userMessage[], int k) {
int i = 0;
int j = 0;
int m = 0;
for (i = 0; i < 1; ++i) {
while (m < 8) {
newBin[j] = Font5x7[k] % 2;
Font5x7[k] = Font5x7[k] / 2;
++j;
++m;
}
}
}
int main (void) {
const int INPUT_STR_SIZE = 40;
char userMessage[INPUT_STR_SIZE];
int i = 0;
int j = 0;
int k = 0;
const int BIN_MAX = 8;
int binNum[BIN_MAX];
printf("Enter message:\n");
fgets(userMessage, INPUT_STR_SIZE, stdin);
//Iterate through DecToBin function for bin equivalents
for (i = 0; i < strlen(userMessage); ++i) {
if (userMessage[i] == 'A') {
for (k = 165; k < 170; ++k) {
DecToBin(binNum, userMessage, k);
for (j = 7; j >= 0; --j) {
printf("%d", binNum[j]);
}
printf("\n");
}
}
}
return 0;
}
【问题讨论】:
标签: c arrays loops matrix orientation