私はCが初めてで、以下のプログラムに問題があります。人々に元気かどうか尋ね、それに応じてメッセージを表示します。これまでのところ!strcmp
、strcmp
を使用してみstrncmp
ましたが、 に対して正の値を返すものはなく、すべてステートメントif
にスキップします。else
構文が私には問題ないように思われるので、どこが間違っているのか教えてください。
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
int main()
{
char well[3];
printf("Hello, are you well today? (Yes/No) ");
scanf_s ("%s",well);
if (!strcmp(well,"Yes")){
printf("Glad to hear it, so am I\n");
}
else{
printf("Sorry to hear that, I hope your day gets better\n");
}
system("PAUSE");
return 0;
}
残念ながら、どれもうまくいかないようです。null を考慮して 4 を割り当てても違いはありません。scanf_s ではなく scanf を呼び出すと、アクセス違反が発生します (プログラムの残りの部分は単純な scanf を使用するため、これは奇妙です。scanf_s に '4' パラメータを追加しても違いはありません。行末に null がありますが、プログラムはそれを認識していないようです。