前提・実現したいこと
与えられた文字列の配列を全て大文字に書き換えるコードを書きたいと思っています。この要件で実装するにあたり、以下のワークフローでの実装を考えています。
0. main関数内で、fgets()関数でキーボードからの入力を受け取る
- 自分で定義した関数に受け取った文字列配列を渡す
- 自分で定義した関数内で、toupper()関数を使用して、for文で一文字ずつ文字を大文字に変換する。
- 戻り値を受けとって、全部大文字になってた文字列を表示する。
実装にあたって躓いている所
・エラーメッセージを読んでみた所、自分の定義した関数の戻り値、ポインターの処理でバグが起きてるいるようなのですが、どのようにすればエラーメッセージを取り除けるか分からないです。
・文字列をfor文でループさせる際に、for (初期化;条件式;変化式)
というような文法で書く必要があると思うのですが、どの様に書けば、文字列を1文字ずつ取り出してtoupper()関数を適用させれば良いのか分らないです。
発生している問題・エラーメッセージ
PS C:\Users\> gcc -o test .\Assighment.c .\Assighment.c: In function 'ConvertString_Upper': .\Assighment.c:16:12: warning: return makes integer from pointer without a cast [-Wint-conversion] return STRING; ^~~~~~ .\Assighment.c: In function 'main': .\Assighment.c:33:10: error: assignment to expression with array type str1 = ConvertString_Upper(str1);
該当のソースコード
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4#include <ctype.h> 5#define MAXLINE 256 6 7 8 9char ConvertString_Upper(char STRING[]){ 10 11 char *STRING_pointer; 12 13 STRING_pointer = STRING; 14 15 for(STRING_pointer; *STRING_pointer; STRING_pointer++){ 16 *STRING_pointer = toupper(*STRING_pointer); 17 18 } 19 20 return STRING; 21 22} 23 24 25 26int main(){ 27 28 char str1[MAXLINE]; 29 30 printf("EnterTHeString\n"); 31 fgets(str1,MAXLINE,stdin); 32 33 str1 = ConvertString_Upper(str1); 34 35 return(0); 36 37}
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/09 08:42