李现实 发表于 2021-6-19 06:51:09

为啥我这个运行会乱码

#include<stdio.h>
#define MAX 1024

int main()
{
        char ch;
        char str1 ;
        char str3 ;
        int i=0,j=0,k=0,n=0;
        printf("请输入一个英文句子:");
        while(ch = getchar()!='\n')
        {
                str1 = ch;
        }
       
        while(str1!='\0')
        {
                if(str1!=' ')
                {
                        str3 = str1;
                }
                else
                {
                        str3 = str1;
                        while(str1 ==' ')
                        {
                                n++;
                        }
                }
        }
        str3 = '\0';
        for(i=0;i<j;i++)
        {
              printf("%c",str3);               
        }
       

        return 0;

       
       
}                 
       

萌新人 发表于 2021-6-19 10:36:08

while(ch = getchar()!='\n')
      {
                str1 = ch;
      }

这段代码有问题 ASCII 码
问题是:运算符优先级,赋值运算是最后执行的,所以每次ch得到的是1,转换成 ASCII 码后乱码

你改成一下代码就好了

while(1)
        {   
                ch = getchar();
                if (ch != '\n')
                       {
                      str1 = ch;
                        }
                else
                        break;
       }


最后完整代码

#include<stdio.h>
#define MAX 1024

int main()
{
      char ch;
      char str1 ;
      char str3 ;
      int i=0,j=0,k=0,n=0;
      printf("请输入一个英文句子:");
                while(1)
                        {   
                                ch = getchar();
                                if (ch != '\n')
                                       {
                                      str1 = ch;
                                        }
                                else
                                        break;
                     }
      
      while(str1!='\0')
      {
                if(str1!=' ')
                {
                        str3 = str1;
                }
                else
                {
                        str3 = str1;
                        while(str1 ==' ')
                        {
                              n++;
                        }
                }
      }
      str3 = '\0';
      for(i=0;i<j;i++)
      {
            printf("%c",str3);               
      }
      

      return 0;

      
      
}

万千只cnm 发表于 2021-6-19 10:40:46

while((ch = getchar() ) !='\n')
页: [1]
查看完整版本: 为啥我这个运行会乱码