teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

誤字 文法の訂正 質問内容の変更

2021/11/17 00:01

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -2,39 +2,49 @@
2
2
  現在c言語を勉強しています。
3
3
  標準入力に英文を入力すると,大文字を小文字に,小文字を大文字に,数字を「*」に変換して
4
4
  標準出力に出力するプログラムを書いていたのですが
5
- どうしてもわからないことがありましたので投稿させていただきます
5
+ どうしてもわからないことがありましたので投稿させていただきます
6
6
 
7
+ 標準入力に
8
+ 「qwErt\n
9
+ asdff\n
10
+ zxcvb\n」
7
- 標準入力に「pEn aPPle pen」と入力をした際に
11
+      と入力をした際に、標準出力に
12
+ 「QWeRT\n
13
+ ASDFF\n
14
+ ZXCVB\n」
8
- 標準出力に「PeN」までしか出力されません。
15
+      と標準出力に出力されてほしいのですが
9
- おそらく空白や改行文字が原因だと思うのですが
10
- どうすれば解決するのかわかりません。
11
16
 
17
+ 「QWeRT\n
18
+ asdff\n
19
+ zxcvb\n」
20
+  といった風に一行目にはプログラムが適用されるのですが
21
+ 二行目以降,プログラムが適用されず困っています。
22
+
12
23
  有識者の方どなたか知恵をお貸しください。
13
24
  ```
14
25
  #include <stdio.h>
15
26
 
16
27
  int main(void) {
17
28
  char ch[256];
18
- int f;
29
+ int f=0;
19
-
30
+
20
- scanf("%s" , ch);
31
+ while(fgets(ch,256,stdin)){
21
-
22
- while(ch[f]!='\0'){
32
+ while(ch[f]!='\0'){
23
- if('a'<=ch[f] && ch[f]<='z'){
33
+ if('a'<=ch[f] && ch[f]<='z'){
24
- ch[f] -= 'a'-'A';
34
+ ch[f] -= 'a'-'A';
35
+ }
36
+ else if('A'<=ch[f] && ch[f]<='Z'){
37
+ ch[f] +='a'-'A';
38
+ }
39
+ else if('0'<=ch[f] && ch[f]<='9'){
40
+ ch[f] = '*';
41
+ }
42
+ f++;
25
43
  }
26
- else if('A'<=ch[f] && ch[f]<='Z'){
27
- ch[f] +='a'-'A';
28
- }
29
- else if('0'<=ch[f] && ch[f]<='9'){
30
- ch[f] = '*';
44
+ printf("%s" , ch);
31
- }
32
- f++;
33
45
  }
34
-
35
- printf("%s" , ch);
46
+
36
-
37
47
  return 0;
38
-
48
+
39
- }
49
+ }
40
50
  ```