所以我对 C 很陌生,而且我刚刚开始使用指针。我正在使用二维数组将一组字符串从十六进制逐个字母转换为十进制。但是,在此过程中,我必须获取每个字符串的第一个字符,为此我试图将它们分配给一个字符。这条线特别给我带来了麻烦。
aChar = input[j][i];
它一直说我无法从 const char* 转换为 char,但无论我如何更改它,我似乎都无法让它工作。
这是完整的程序:
#include <stdio.h>
#include "catch.hpp"
#include <unistd.h>
TEST_CASE("Listing 2.2")
{
int x;
int j = 0;
int i = 0;
x = 0;
const int N = 8;
char aChar;
const char* input[N][5] = {"a000", "ffff", "0400", "1111", "8888", "0190", "abcd", "5555"};
int answers[N] = {40960, 65535, 1024, 4369, 34952, 400, 43981, 21845};
for (j=0; j>N; j++){
for(i=0; i>5; i++){
aChar = input[j][i];
x = x << 4;
if (aChar <= '9')
{
x = x + (int)(aChar & 0x0f);
}
else
{
aChar = aChar & 0x0f;
aChar = aChar + 9;
x = x + (int)aChar;
}
CHECK(answers[j] == x);
}//end for 1
}//end for 2
printf("End of program.\n");
}
任何帮助,将不胜感激!