有关字符读取并输出的疑问

sunyuqian 2009-12-13 12:36:59
大家好,这道题要求将输入的字符输出,有的字符需转换,现在唯一的问题是当按下ctrl+A这种输入时,要把它以^ A这样的形式输出,他的asc码为1,但要是按下ctrl+G的话,他的asc码为7,如何判断这种输入呢?

#include <stdio.h>
int main(void)
{
char ch;
int count;
count = 0;
while((ch = getchar()) != EOF)
{
if(ch == '\n'){
printf("\\n %d ",ch);
}
else if(ch == 1) /*就是这一行,只能判断出ctrl+A,如何判断其他的呢*/
{
printf("^ %c ",ch+64);
}
else
printf("%c %d ",ch,ch);
count++;
if(count%5==0)
printf("\n");
}
return 0;
}
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyuqian 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 deng1243 的回复:]
C/C++ code
#include<stdio.h>int main(void)
{char ch;int count;
count=0;while((ch= getchar())!= EOF)
{if(ch=='\n'){
printf("\\n %d",ch);
}elseif(ch>=1&&ch<=26)/*就是这一行,只能判断出ctrl+A,如何判断其他的呢*/
{
printf("^ %c",ch+64);
}else
printf("%c %d",ch,ch);
count++;if(count%5==0)
printf("\n");
}return0;
}
这样吗
[/Quote]

是个办法,谢谢
deng1243 2009-12-13
  • 打赏
  • 举报
回复

#include <stdio.h>
int main(void)
{
char ch;
int count;
count = 0;
while((ch = getchar()) != EOF)
{
if(ch == '\n'){
printf("\\n %d ",ch);
}
else if(ch >= 1&&ch<=26) /*就是这一行,只能判断出ctrl+A,如何判断其他的呢*/
{
printf("^ %c ",ch+64);
}
else
printf("%c %d ",ch,ch);
count++;
if(count%5==0)
printf("\n");
}
return 0;
}

这样吗

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧