enter会让程序自动执行,怎么解决

这个程序是输入字符,会以十进制打印出来,每八个一行

但是输入enter时会自动执行一部分,比如这样

img


第一次输入了9个字符,8个字母,一个回车,回车之后就执行了一部分,

怎样才能让它读取到‘#’才会执行全部,而不是回车会自动执行一部分🤔

求大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;
} 

img

要么你把要输入的数据先都敲进txt里,然后一次性的复制粘贴进来,再回车执行
要么先用数组缓存输入,等都输入完了再循环执行
否则你这样while里直接print,那肯定敲一次回车就执行一次呀