質問: 次のプログラムは文字列Hokkaidoを整数列78663148に変換して出力するものです。
回答: 配列 str は未初期化。 Cでは、ローカル変数はプログラマが明示初期化してない 場合、中味は 不定 です。 scanf("%s" は、入力文字列の終端に '\0' を置く 仕様だから、Hokkaido 直後の1文字は '\0' だけど、 str の以降の中味は不定です。 だから、たまたま中味が 0 になってない限り、 あなたの else if にはひっかからない。 str の全要素を '\0' に初期化してやれば、 結果は変わるでしょう。 char num[100], str[100]; ↓ char num[100], str[100]={0};