c - 在 C 错误中翻译用户输入程序

标签 c

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

  1. 如果字符是字母,则必须大写打印。
  2. 如果字符是数字 (0-9),则必须打印星号 (*)。
  3. 如果字符是双引号 ("),则必须打印单引号 (')。
  4. 如果字符是反斜杠“\”,则跳过(不打印)并打印下一个字符而不做任何修改。
  5. 否则,字符按原样打印。

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);
        }
    }
}

我的问题

  1. 这并不像预期的那样。我在这里缺少什么条件。
  2. 如何在不使用任何内置函数的情况下满足条件 4。

最佳答案

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);
  }
}

Working demo here

关于c - 在 C 错误中翻译用户输入程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28759798/

相关文章:

c - 内核空间的Linux UDP获取sockaddr_in

C 中的常量数组类型,标准中的缺陷?

使用 u+s 权限重新启动的 C 程序

C: 用 scanf fork

找不到段错误的位置

c - 在 C 中使用指针和数组

c - 理解数组和函数

c - strncat() 上的段错误

Config Handling in structural configuration 使用C语言

c - 如何获取结构体的结构信息