题目如下:编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的十进制ASCII码,每行打印8个“字符-ASCII码”组合。
网络上的示例都是只支持一行输入,也就是说字符‘\n’也会成为输入结束的标志,感觉这样就偏离了题意,因为按照题意来看换行符也应该成为“输入的字符”并参与转换,基于这个观点,对程序进行了一点改动:
#include<stdio.h>
#include<string.h> //为使用strlen函数做准备
int main(void)
{
int i=0;
char ch;
char chs[101]={};//创建一个允许输入100个字符的字符型数组
while((ch=getchar())!='#')
{
chs[i]=ch;
i++;
if(i==100) break;//只会记录前100个字符,后面的会停止循环,防止内存错误
}
for(i=0;i<strlen(chs);i++)
{
switch(chs[i])//处理了回车与Tab两个特殊输入
{
case 10:printf("\\n-10\t");break;
case 9:printf("\\t-9\t");break;
default:printf("%c-%d\t",chs[i],chs[i]);//其他输入会以统一形式处理
}
if((i+1)%8==0) printf("\n");//如果输出数量满足8个就换行
}
return 0;
}
技术限制,设计了只能记录前100位的程序,望有意者给予改进。