用C语言翻译用户输入程序的错误

用C语言翻译用户输入程序的错误,c,C,我正在试用一个程序,该程序根据以下规则翻译用户输入: 如果字符是字母,则必须以大写字母打印 如果字符是数字(0-9),则必须打印星号(*) 如果字符是双引号(“),则必须打印单引号(') 如果字符是反斜杠“\”,则跳过该字符(未打印),并且打印下一个字符而不进行任何修改 否则,字符将按原样打印 MyCode #include <stdio.h> void lowertoupper(char lower) { char upper; if(lower >=

我正在试用一个程序,该程序根据以下规则翻译用户输入:

  • 如果字符是字母,则必须以大写字母打印
  • 如果字符是数字(0-9),则必须打印星号(*)
  • 如果字符是双引号(“),则必须打印单引号(')
  • 如果字符是反斜杠“\”,则跳过该字符(未打印),并且打印下一个字符而不进行任何修改
  • 否则,字符将按原样打印
  • MyCode

    #include <stdio.h>
    
    
    void lowertoupper(char lower)
    {
        char upper;
    
        if(lower >= 'a' && lower <= 'z'){
            upper = ('A' + lower - 'a');
        }
        else{
            upper = lower;
        }
    
        printf("%c",upper);  
    }
    
    int main(void) {
        char chara;
        printf("please enter");
    
        while(scanf(" %c", &chara)!= EOF)  {
            if ((chara>='a' && chara<='z')||(chara>='A' && chara<='Z'))
            {
                lowertoupper(chara);
            }
            else if (chara>=0 && chara<=9)
            {
                printf("*");
            }
            else if (chara=='"')
            {
                printf("'");
            }
            else if (chara=="\\")
            {
            }
            else {
                printf("%c",chara);
            }
        }
    }
    
    #包括
    void lowertoupper(char lower)
    {
    炭上;
    
    如果(lower>='a'&&lower='a'&&chara='a'&&chara=0&&chara您的数字测试有问题。数字字符是
    '0'
    '1'
    ,其实际值取决于本地字符集,但从
    0
    9

    int-noChange=0;/*已添加*/
    
    int noChange = 0;  /* Added */
    
    while(scanf(" %c", &chara) == 1)  {  /* Modified */
      if(noChange == 1) {    /* Added */
        printf("%c",chara);  /* Added */
        noChange = 0;        /* Added */
      }    /* Added */
      else if ((chara>='a' && chara<='z')||(chara>='A' && chara<='Z'))    /* Modified */
      {
        lowertoupper(chara);
      }
      else if (chara >= '0' && chara <= '9')  /* Modified */
      {
        printf("*");
      }
      else if (chara=='"')
      {
        printf("'");
      }
      else if (chara=='\\')  /* Modified */
      {
        noChange = 1;    /* Added */
      }
      else {
        printf("%c",chara);
      }
    }
    
    而(scanf(“%c”,&chara)==1){/*修改*/ 如果(noChange==1){/*添加*/ printf(“%c”,字符);/*已添加*/ noChange=0;/*已添加*/ }/*增加*/
    否则,如果((chara>='a'&&chara='a'&&chara='0'&&chara这也起作用,则比较chara存储ascii值,因此“0”的ascii值不是0

    #include <stdio.h>
    
    int main() {
        char chara = '\0';
        while(scanf("%c", &chara) == 1)  {
            if ( chara>='a' && chara<='z' ) printf("%c",'A' + (chara - 'a'));
            else if (chara >= '0' && chara <= '9') printf("%c",'*');
            else if (chara=='"') printf("%c",'\'');
            else if (chara=='\\') ;
            else printf("%c",chara);
        }
    }
    
    #包括
    int main(){
    字符字符='\0';
    而(scanf(“%c”,&chara)==1){
    
    如果(chara>='a'&&chara='0'&&chara
    scanf
    的格式字符串不应该有空格。实际上这里不需要
    scanf
    ,使用
    getchar
    。您的第一个实现应该使用
    中的函数
    isalpha
    isdigit
    。是的可能重复问题是类似,但是这里的代码和场景不同。