这个程序是输入字符,会以十进制打印出来,每八个一行
但是输入enter时会自动执行一部分,比如这样
怎样才能让它读取到‘#’才会执行全部,而不是回车会自动执行一部分🤔
求大shen解答,感谢🙇
#include<stdio.h>
int main(void)
{
char ch;
int counter = 0;
while((ch = getchar()) != '#')
{
if(counter++%8 == 0) //八个字符打印一个回车,
{
printf("\n");
}
if(ch == '\n')
{
printf("'\\n'-%03d. ", ch);
}
else if(ch == '\t')
{
printf("'\\t'-%03d. ", ch);
}
else printf("'%c'-%03d. ", ch, ch);
}
printf("Done!\n");
return 0;
}
你在输入的位置后面再加上一个getchar()方法,吸收掉回车符就好了啊
使用一个字符数组存储输入的字符,然后等输入'#'字符后,就打印存入字符数组的字符即可,修改如下:
#include<stdio.h>
int main(void)
{
char ch;
int counter = 0,i;
char chs[1024] ; // 字符数组最多可以存储1024个字符,如果输入的字符很多,可以把这个数值调大点
while((chs[counter] = getchar()) != '#')
{
counter++;
}
if(counter>0){
for(i=0;i<counter;i++){ // 满了8个字符就逐个打印它们
if(i%8==0&&i!=0){
printf("\n");
}
if(chs[i]== '\n')
{
printf("'\\n'-%03d. ", chs[i]);
}
else if(chs[i] == '\t')
{
printf("'\\t'-%03d. ", chs[i]);
}
else printf("'%c'-%03d. ", chs[i], chs[i]);
}
}
printf("\nDone!\n");
return 0;
}
要么你把要输入的数据先都敲进txt里,然后一次性的复制粘贴进来,再回车执行
要么先用数组缓存输入,等都输入完了再循环执行
否则你这样while里直接print,那肯定敲一次回车就执行一次呀