我是新的C和我創造了一些代碼,不工作...複製多維列C
我得到一個警告,而initLetterLib():整數轉換導致截斷
我嘗試memcpy我的libraryLetter到我的outputLED,但它不起作用。 我只是得到0x00到我的outputLED。 我試圖在outputLED中複製別的東西 - 這真的很好。 但我不明白爲什麼有我的libraryLetters一個問題...
#define LETTER_WIDTH 6
typedef unsigned char letter[LETTER_WIDTH];
letter libraryLetters[128];
void initLetterLib(){
*libraryLetters[0x20] = 0x000000000000; // Blank
*libraryLetters['A'] = 0xFE909090FE00;
*libraryLetters['H'] = 0xFE101010FE00;
*libraryLetters['L'] = 0xFE0202020200;
*libraryLetters['O'] = 0xFE828282FE00;
*libraryLetters['U'] = 0xFE020202FE00;
*libraryLetters['R'] = 0xFE9894946200;
*libraryLetters['Z'] = 0x868A92A2C200;
*libraryLetters['I'] = 0x0000FE000000;
*libraryLetters['F'] = 0xFE9090808000;
}
// takes a String and generates the outputsequence for LEDs
unsigned char * stringToLEDText(char* textString)
{
static unsigned char outputLED[LED_STEPS];
unsigned char i = 0; // index
// check length of string text
unsigned short length = strlen(textString);
// if more than 10 letters are used return error
if (length > LETTERS_LED_OUTPUT)
{
printf("Error: Too much letters. Just 10 Letters are allowed\n");
return 0;
}
// through complete string
for (i = 0; i < length; i++)
{
memcpy(&outputLED[i * LETTER_WIDTH], &(libraryLetters[textString[i]]),
LETTER_WIDTH);
}
// fills rest with 0
for (i = length * LETTER_WIDTH; i < LED_STEPS; i++)
{
outputLED[i] = 0x00;
}
return outputLED;
}
任何想法?
感謝 費邊
你期望使用什麼整數類型(MCU)來處理48位常量,比如0xFE0202020200?也許你的MCU是64位的?將'letter'類型定義爲'int64'或類似的64位'long',而不是數組。否則,你不能完成任務。 – i486
您的代碼格式和縮進遍佈整個地方。請[編輯]並修復它。 – user694733