2

そこで、単語を入力する必要があるプログラムを作成し、それが回文 (両方の方法で同じ単語) であるかどうかを表示します。

#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]){
    char word;
    int length, counter;

    printf("Please enter a word: ");
    scanf("%c", &word);

    int flag = 1;

    for (counter = 0; counter < length && flag; counter++) {
        printf("%c\t %c", word[counter], word[length - counter])
        if (word[counter] == word[length - counter - 1]){
            flag = 0;
        }
    }
    if (flag) {
        printf("%c is a palindrome!", word);
    }
    else {
        printf("%c is NOT a palindrome!", word);
    }
}

各文字を並べて表示するように設定しました。文字が同じでない場合、フラグが「スロー」(0 に設定) され、「単語は回文ではありません!」と言ってプログラムが終了します。

word[counter] という部分で添字付きの値ではないというエラーが出ます。これを機能させるにはどうすればよいですか?私が間違っていることは他にありますか?

4

3 に答える 3

2

これchar word;は配列ではありません。これchar word[100];は配列です。また、単語ではなく単一の文字を読み取りますscanf("%c", &word);(文字列または一連の文字のように)。使用する:

fgets (word , 100 , stdin) 

またlength、初期化されていないため、UB につながります。

于 2013-10-22T14:00:00.630 に答える