#include "stdafx.h"
#include "stdlib.h"
#include <ctype.h>
int num = 0;
int i = 0;
int ch = 0;
int letter_index_in_alphabet(int ch) {
if (isalpha(ch) == true) {
char temp_str[2] = { ch };
num = strtol(temp_str, NULL, 36) - 9;
printf("%d is a letter, with %d as its location in the alphabet!", ch, num);
}
else {
return -1;
}
}
int main()
{
char input_str[10];
printf("Please enter a series of up to 10 letters and numbers: \n");
fgets(input_str, 10, stdin);
for (i == 0; i <= 10; i++) {
ch = input_str[i];
letter_index_in_alphabet(ch);
}
return 0;
}
こんにちは皆さん、これはSOFの私の最初の投稿です!このプログラムの目的は、標準入力からEOFに文字を読み込むことです。各文字について、文字であれば報告する。文字の場合は、アルファベット( 'a'または 'A' = 1、 'b'または 'B' = 2..etc)でそれぞれのインデックスを印刷します。私はstackoverflow上のいくつかの他の投稿を検索しており、これは私がこれを(fgetsとstrtol関数を使って)得るのを助けてくれました。私はこのコードを実行すると、表示される構文エラーはありませんが、文字列(例:567gh3fr)を入力するとプログラムがクラッシュします。ユーザー入力を文字の配列に変換し、他の文字から文字をフィルタリングしますか?
基本的には、「fgets」を使用して、入力された各文字を適切なインデックスの文字列に変換しようとしています。その文字列を取得したら、各インデックスに文字がないかどうかチェックし、そうであればそのアルファベットの文字に割り当てられた番号を出力します。
これが意図したとおりに機能しない理由についての助力や洞察力があれば、大変感謝しています。
1) 'i == 0; i <= 10;' --> 'i = 0; (i); isalpha(ch)== true' - > 'isalpha((unsigned char)ch)' – BLUEPIXY
'i <= 10'は' i <10'でなければなりません。配列のインデックスは0から9になります。 – Barmar