前提・実現したいこと
現在、モールス信号をアルファベットに直すプログラムを作成中です。
モールス信号のアルファベットを以下のように数字に対応させ、「・」を読み取ると変数numを2倍、「-」を読み取るとnumを2倍して1を足すことで、ファイルから1文字ずつ読み取り復号させることを考えました。
しかし、何も出力されずにプログラムが終了してしまいます。
理由が見当たらないため、分かる方にご教授頂きたいです。
該当のソースコード
C
1#include <stdio.h> 2 3int main(){ 4 int num = 1; 5 char *s; 6 char *alphabet = "**etianmsurwdkgohvf*l*pjbxcyzq**"; 7 8 while(scanf("%[^\n]%*c", s) != EOF){ 9 while(*s){ 10 if(*s == '.') num = num * 2; 11 else if(*s == '-') num = num * 2 + 1; 12 else if(*s == ' '){ 13 printf("%c", alphabet[num]); 14 num = 1; 15 } 16 else if(*s == '/') printf(" "); 17 s++; 18 } 19 printf("%c\n", alphabet[num]); 20 num = 1; 21 } 22 return 0; 23} 24
###input.txtの内容
-- --- .-. ... . / -.-. --- -.. .
###出力
期待される出力
morse code
実際の出力
(何も表示されずプログラム終了)
試したこと
ファイル入力を用いず、標準入力のときも出力されませんでした。
補足情報
Windows, VSCodeでプログラムを記述し、gccでコンパイルしました。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/07 23:45