我是初学者。我被要求编写一个模块,根据以下规则翻译用户输入:
如果字符是字母,请将其设为大写
如果字符是数字,则改为
如果字符是\,则下一个字符不受影响
程序必须继续调用scanf()来读取用户的字符,直到遇到EOF。注意:你应该在得到字符后立即打印字符。不要试图保存它们。
示例:
input : Hi Mike your room number is \4\2\3 and the passcode is 312
output: HI MIKE YOUR ROOM NUMBER IS 423 AND THE PASSCODE is ***
现在我的问题是:既然你不知道接下来会输入什么类型的角色,你怎么能把它保存在像scanf这样的变量中("%c",& func)将字符保存在func中?另外,我不允许使用toupper(),那么如何才能使字母大写呢?
感谢任何帮助!!谢谢
答案 0 :(得分:3)
您必须先将其视为字符串(或单个字符)。然后,您可以通过比较其ASCII码来检查某些内容是否为数字:
if(x >= '0' && x <= '9') // digit
与其他条件类似。
答案 1 :(得分:0)
您应该逐个阅读输入字符并相应地解析它 试试这段代码:
#include <stdio.h>
void change();
char ch;
int
main(void){
fprintf(stdout, "Input : ");
for(;;){
ch = getchar();
if(ch=='\n')
break;
else if(ch=='\\') /* no change */
ch = getchar();
else
change();
fprintf(stdout, "%c", ch);
}
return 0;
}
void change(){
if(ch>=97 && ch<=122) /* small case letters */
ch-=32;
else if(ch>=48 && ch <=57) /* numbers */
ch='*';
}