孤世星辰 发表于 2020-3-26 21:14:05

这里为啥会多个乱码

#include<stdio.h>
2 #include<string.h>
3 #define num 21
4 int main()
5 {
6
7         char str1;
8         int i=0;
9         _Bool flag=1;
10         printf("请输入一行文本:");
11         while((str1 = getchar()) != '\n')
12         {
13               if(str1==' ')
14               {
15                         flag=0;
16               }
17
18         }
19         if(i<20)
20         {
21               printf("%s\n",str1);
22         }
                if(i>=20)
24         {
25               if(flag)
26               {
27               printf("HelloEveryone,I'm YourGoodFriend.\n");
28               }
29               else
30               {
31               printf("Hold on your hats.\n");
32               }
33         }
34         return 0;
35
36
37
38 }

孤世星辰 发表于 2020-3-26 21:15:25

1.我有空格的那个输出应该是Hold那个才对哇
2.那个fish后面的乱码是怎么回事

sunrise085 发表于 2020-3-26 21:42:42

你的程序有两处错误。
1、while循环的条件中已经执行了 i++while循环内的if语句应该判断的是str1,而不应该是str1
2、执行完while循环后,字符串没有在结尾添加'\0',这样会导致printf%s的时候越界(%s是以'\0'判断结尾的),输出乱码,这是你的程序出现乱码的原因。


#include<stdio.h>
#include<string.h>
#define num 21
int main()
{
    char str1;
    int i=0;
    int flag=1;
    printf("请输入一行文本:");
    while((str1 = getchar()) != '\n')
   {
             if(str1==' ')
             {
               flag=0;
            }
      }
   str1='\0';
      if(i<20)
      {
         printf("%s\n",str1);
      }
      if(i>=20)
      {
          if(flag)
          {
             printf("HelloEveryone,I'm YourGoodFriend.\n");
          }
          else
          {
             printf("Hold on your hats.\n");
          }
      }
      return 0;
}

孤世星辰 发表于 2020-3-27 09:14:43

sunrise085 发表于 2020-3-26 21:42
你的程序有两处错误。

想问一下为啥我复制代码会复制到前面的行数,然后我把小甲鱼的代码复制进我的编程里行首就会多很多tab符

sunrise085 发表于 2020-3-27 09:22:11

孤世星辰 发表于 2020-3-27 09:14
想问一下为啥我复制代码会复制到前面的行数,然后我把小甲鱼的代码复制进我的编程里行首就会多很多tab符
...

我不知道你用的是什么编译器,也不知道为什么你复制程序会带有前面的行号。

复制小甲鱼的代码有很多tab,这个是因为不同的编译器的tab不一样,有的是4个空格,有的是8个空格,二刚好小甲鱼的代码是8个,你的是4个,所以复制过去之后tab就多了一倍。
目前不要纠结于tab的多少,先学精髓。
其实很多大神在编程的时候都不用tab的,只用空格,这样就不会遇到你所说的问题

孤世星辰 发表于 2020-3-27 09:27:33

sunrise085 发表于 2020-3-27 09:22
我不知道你用的是什么编译器,也不知道为什么你复制程序会带有前面的行号。

复制小甲鱼的代码有很多ta ...

那怎么把这个行数弄掉哇,不然每次复制代码都挺麻烦的

sunrise085 发表于 2020-3-27 09:43:56

孤世星辰 发表于 2020-3-27 09:27
那怎么把这个行数弄掉哇,不然每次复制代码都挺麻烦的

这个我也不知道。
你试试,Alt+鼠标选中,这个好像能够竖向区块选中。
具体行不行我也不知道。
你网上查一下吧。
页: [1]
查看完整版本: 这里为啥会多个乱码