質問編集履歴

1 スペースで区切られてなければ、できるようになりました。しかし、スペースで区切られると、スペースの前まではできるんですけど、そっから先は表示されません。どうすればいいのでしょうか

ryu72639

ryu72639 score 6

2018/07/17 18:46  投稿

一文字は表示できるけど、複数文字ができない
入力された文字列を,1文字ずつ以下のルールに従って暗号化して画面に表示するプログラムを作成せしよとしました.
英大文字は,アルファベット順で次の文字(Zの次はAとする)にし英小文字に変換する.(例)A → b,F → g,Z → a
英小文字は,アルファベット順で前の文字(aの前はzとする)にし英大文字に変換する.(例)a → Z,k → J,z → Y
数字は,1文字ずつ10の補数に変換せよ.ただし0 は 0 のままとする.(例)9 → 1,3 → 7
記号(英数字以外)は変換しない.
入力される文字列は,文字数が512文字以下で,改行コードを含まないとし、(スペース,タブは含まれることがある)
一文字だけ入力すると、答えが表示できるようになりましたが、複数文字を入力できるようにする方法がわかりません。助けてください!
スペースで区切られてなければ、できるようになりました。しかし、スペースで区切られると、スペースの前まではできるんですけど、そっから先は表示されません。どうすればいいのでしょうか  
```c
#include <stdio.h>
#include <string.h>
//大文字を小文字に変換                                                                             \
                                                                                                   
char tolowr(char c)
{
 return (c + 0x21);
}
/* 小文字を大文字に変換 */
char toupr(char c)
{
 return (c - 0x1f);
}
int main(void)
{
 char ci, co, Co;   /* ci : 入力文字 / co : 出力文字 */
 int i;
 // printf("Input Charactor : ");                                                                 \
                                                                                                   
 scanf("%c", &ci);
    /* アルファベットか数字かを判定 */
   if( (ci>='a'&& ci<='z') || (ci>='A' && ci<='Z')){
     // printf("入力した文字「%c」はアルファベット\n", ci);                                       \
                                                                                                   
     if (ci>='A' && ci<='Y'){
       co = tolowr(ci);
       printf("%c\n", co);
     }
     if (ci == 'Z'){
       printf("a\n");
     }
     if(ci>='a'&& ci<='y'){
       Co = toupr(ci);
       printf("%c\n", Co);
     }
     if(ci == 'z'){
       printf("A\n");
     }
   }
   else if(ci > '0'&& ci<='9'){
     /* printf("入力した文字「%c」は数字です。\n", ci);*/                                         \
      ci = 10 - ci;
     printf("%c\n", ci );
   }
   else if(ci == '0'){
     printf("%c\n", ci);
   }
   else
     printf("「%c」はアルファベットでも数字でもありません。\n", ci);
 return 0;
}
```  
 
 
```c  
 
#include <stdio.h>  
#include <string.h>  
 
//大文字を小文字に変換                                                                             \  
\                                                                                                     
                                                                                                   \  
 
char tolowr(char c)  
{  
 return (c + 0x21);  
}  
 
/* 小文字を大文字に変換 */  
char toupr(char c)  
{  
 return (c - 0x21);  
}  
 
int main(void)  
{  
 char ci[512] = {0};  
 char co[512] = {0};  
 char Co[512] = {0};   /* ci : 入力文字 / co : 出力文字 */  
 int i;  
 
 // printf("Input Charactor : ");                                                                 \  
                                                                                                     
 scanf("%s", ci);  
 
 for(i = 0; i < sizeof(ci); i++){  
   /* アルファベットか数字かを判定 */  
   if( (ci[i]>='a'&& ci[i]<='z') || (ci[i]>='A' && ci[i]<='Z')){  
     // printf("入力した文字「%c」はアルファベット\n", ci);   \                                     
 
     if (ci[i]>='A' && ci[i] <='Y'){  
       co[i] = tolowr(ci[i]);  
       printf("%c", co[i]);  
     }  
         
     if (ci[i] == 'Z'){  
       printf("a");  
     }  
 
     if(ci[i]>='b'&& ci[i]<='z'){  
       Co[i] = toupr(ci[i]);  
       printf("%c", Co[i]);  
     }  
     
     if(ci[i] == 'a'){  
       printf("Z");  
     }  
   }  
 
   else if(ci[i] > '0'&& ci[i] <= '9'){  
     /* printf("入力した文字「%c」は数字です。\n", ci);*/     \  
     ci[i] = 10 - ci[i];  
     printf("%c", ci[i]);  
   }  
   else if(ci[i] == '0'){  
     printf("%c", ci[i]);  
   }  
   else {  
     printf("%c", ci[i]);  
   }  
 }  
 
 printf("\n");  
 
 return 0;  
}  
 
 
 
```
  • C

    4543 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る