0
私はコマンドラインでモールスコードトランスレータを作成していますが、モールスコード相当物を保持している配列にユーザ入力を保持している配列を比較するのに問題があります。ユーザーが入力した場合、「.-」argv配列に格納されている2つの配列を持つCのstrstrメソッドを使用していますか?
const char *morse[SIZE] = {
"0 ----- ",
"1 .---- ",
"2 ..--- ",
"3 ...-- ",
"4 ....- ",
"5 ..... ",
"6 -.... ",
"7 --... ",
"8 ---.. ",
"9 ----. ",
"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 --.. ",
};
int main(int argc, char *argv[])
{
int i=0;
for (i = argc-1; i >=0; i--)
{
argv[i] = argv[i];
printf("%s\n", argv[i]);
}
if (argc < 3)
{
printf("Need atleast two arguments");
return 0;
}
for (int i = argc-1; i >= 0; i--)
{
for (int ii = 0; ii <= SIZE; ii++)
{
char *pointer = strstr(morse[ii], argv[i]);
if (pointer!=NULL)
{
printf("%c", *morse[ii]);
}
}
}
だから、私は、forループをモールス通過し、見つけることはstrstrを使う「.-」、そしてそれは最初の文字を印刷しますこれは "a"になります。 私はモールス配列の最初の文字を正常に表示することができないと私はそれがstrstrと関係があると推測しています。
注(モールスでE)であるようですすべての '.'を使用するシンボルです。別のコンパレータを使う必要があります。データがあれば、比較のために 'strcmp(&morse [ii] [2]、argv [i])'を使うことができます。 –