先ほども似たような質問をしたのですが、情報不足と投げやり感が否めなかったので再度質問させていただきます。
大学の課題で、小文字を大文字に変換せよというものが出されたのですが、全く理解できず困り果てています。
まずは配られたひな形をご覧ください。
#include <stdio.h>
int main(void)
{
char name_komoji[] = {}; //*ここに任意のASCIIの小文字にあたる数値を入力する char name_oomoji[100]; int i; i = 0; while (name_komoji[i] != 0) // 「!= 0」は省略可 {
//ここに小文字を大文字に変換する処理を書く//
i++;
} name_oomoji[i] = 0; // '\0'と書いてもよい printf("%s\n", name_komoji); printf("%s\n", name_oomoji); return 0;
}
上記が配布されたものです。
私自身、小文字を大文字に変換する処理に name_oomoji[i]=i-32 などとしてみましたが、実行しても小文字しか表示されなかったり、文字化けしたりしてしまいました。
32を引いたり足したりすることは理解しているのですが、その処理をどう書けばよいのか分かりません。
また、任意の小文字を入力する箇所に空白として32を打ち込んだ場合は、-32とすると0となってしまうのですがどうすればよいでしょうか。
回答のほどよろしくお願いします。
もしかして変換対象は大文字と小文字が混ざっているのですか?
小文字の場合は32を引くだけで良いですが,大文字は何もしないよう,分岐処理が必要ですよ?
> name_oomoji[i]=i-32 などとしてみましたが
i は0からカウントアップしているだけの変数だから,そいつから32引くことは所望の処理ではないであろう.
char name_komoji[]
というやつの中に元々の小文字なデータが入っているのであれば,少なくともそのデータを処理に用いる必要があるのではあるまいか.
>>ps_aux_grep
変換対象に大文字は含まれないです。ただ氏名になるので苗字と名前の間に空白(32)を入れたいのです。
while (name_komoji[i] != 0)
{
name_oomoji[i]=name_komoji[i]-'a'+'A';
i++;
}
name_oomoji[i]=...の前にif(i=!32)と分岐させようとしましたが、実行しても何も起きなくなってしまいます。
では,その分岐方法が悪いです.
そのようなtrial and errorに関して質問の内容を編集し,まとめてください.
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14270528179
以下ご対応ください。
https://teratail.com/help#posted-otherservice
teratailでは、マルチポスト※の推奨はしていません。
やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。 また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。
粘着
回答3件
あなたの回答
tips
プレビュー