Мне нужно завершить проект с азбукой Морзе, используя микроконтроллер TI MSP430G2553 для прошивки азбуки Морзе. Я пытаюсь заставить программу распечатывать точку и тире для каждой буквы, прежде чем связываться со вспышкой микроконтроллера. Я не уверен, как сравнить массив с 2D-массивом. Я хотел бы для сравнения затем проверить, найдена ли точка, тире или пробел при просмотре соответствующей буквы в массиве. Вот что у меня есть.
Я попытался установить массивы друг к другу, выполнив «if (str [i] == morse_array [j] [k])», но я получил только сообщение о том, что не могу сравнить указатель и целое число , Любое руководство по шагам, чтобы это исправить?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void time_delay(int sec);
void main(void)
{
unsigned int i = 0;
unsigned int j, k;
char str [] = "Go Knights";
char* morse_array [36][2] = {{".-", "A"}, {"-...", "B"}, {"-.-.", "C"}, {"-..", "D"}, {".", "E"}, \
{"..-.", "F" }, { "--.", "G"}, {"....", "H"}, {"..", "I"}, {".---", "J"}, {"-.-", "K"}, {".-..", "L"}, \
{"--", "M"}, {"-.", "N"}, {"---", "O"}, {".--.", "P"}, {"--.-", "Q"}, {".-.", "R"}, {"...", "S"}, \
{"-", "T"}, {"..-", "U"}, {"...-", "V"}, {".--", "W"}, {"-..-", "X"}, {"-.--", "Y"}, {"--..", "Z"}, \
{"-----", "0"}, {".----", "1"}, {"..---", "2"}, {"...--", "3"}, {"....-", "4"}, {".....", "5"}, {"-....", "6"}, \
{"--...", "7"}, {"---..", "8"}, {"----.", "9"}};
for(i=0; i< strlen(str); i++){
for (j=0; j <= i; j++) {
if (strncmp(morse_array[i][j], &str[i], strlen(str)) == 0){
if(str[i] == '.'){
printf("DOT");
time_delay(200);
}
else if (str[i] == '-'){
printf("DASH");
time_delay(600);
}
else if (str[i] == ' '){
printf("SPACE");
time_delay(1400);
}
}
}
time_delay (1400);
}
printf("start program again");
return;
}
void time_delay(int sec) {
// Converting time into milli_seconds
int milliSeconds = 1000 * sec;
clock_t start = clock();
while (clock() < start + milliSeconds)
;
}