※ ChatGPTを利用し、要約された質問です(原文:toupper関数とstrcmp関数を使った問題)
toupper関数とstrcmp関数を使った問題
このQ&Aのポイント
キーボードから文字列を読み取るプログラムを作成し、「end」と入力されるまで繰り返す。
入力された文字列に大文字と小文字が混ざっていても終了するようにする。
文字列の比較にはstrcmp関数を使用し、小文字を大文字に変換するにはtoupper関数を使用する。
前回答えてくださった方々へのお礼
・前回質問した際、質問に答えてくださった方々、皆様のおかげで問題を解く事ができました。本当にありがとうございました。
↓ここから質問です。
「end」と入力されるまで、キーボードから文字列を読み取るプログラムを作成してください。ただし、大文字と小文字が混ざった「EnD」などでも終了するようにしてください。小文字を大文字に変換する「toupper( )関数」を利用してください。また、文字列の比較には「strcmp( )関数」を利用してください。
という問題を解いているのですが、自分でした結果
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
char str[10]; ←str[10]は適当に値を決めているだけです
int i,ret;
int result;
do {
printf("文字列を入力してください:");
scanf("%s", str);
i = 0;
while (str[i] != ???? ) // 文字列の最後かチェック
{
ret = toupper(?); // toupper関数に1つずつ渡す
i++;
}
result = strcmp("END", str); //文字列の比較
if (result == 0)
{
break; //ループを抜ける!
}
} while (1); // 条件が1の場合は永久ループ
return 0;
}
ここまではできたのですが、どうしても
while (str[i] != ???? ) // 文字列の最後かチェック
{
ret = toupper(?); // toupper関数に1つずつ渡す
i++;
}
この部分の「?」と書いている部分がわかりませんでした。
わかる方が居られましたらどうか教えてもらえないでしょうか?
あと、おかしな部分等がありましたら教えてください。
どうかよろしくお願いします。
お礼
返答ありがとうございます。 str[i]に戻すとうまくいきました。 本当にありがとうございました^^。