前提・実現したいこと
小文字で与えられた、文字列を一部大文字に変更するプログラムを現在作成中です。
例えば、
this is a pen
という、文字列が渡され、2文字目~6文字目を大文字に変えたい場合は
tHIS Is a pen
と返すプログラムです。
しかし、私のプログラムでは、空白文字をまたぐと、大文字に変更できなくなります。どのように克服するとよいでしょうか。ご教授いただければ幸いです。
できれば、toupper関数を用いず、この問題を克服したいです。
該当のソースコード
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void){ char str[1000],s[10],s1[10]; int i,start,end,len; scanf("%s %s", s,s1); start = atoi(s); end = atoi(s1); fgets(str, sizeof(str), stdin); fgets(str, sizeof(str), stdin); len = strlen(str); for(i=start-1;i<end-1;i++){ if(str[i] != ' '){ ///条件 str[i] = str[i] - ('a'-'A'); } } for(i=0;i<len;i++){ printf("%c", str[i]); ///表示 } return 0; }
出力
tHIS is a pen
試したこと
このほかにも条件の部分を
'a' <= str[i] <= 'z' || 'A' <= str[i] <= 'Z'
にしたり、(出力は:tHISis a pen)
表示の部分をfor文を用いず、
printf("%s",str);
にしました。(出力は:tHIS)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/09 22:21