聊生于污 发表于 2019-5-25 18:05:35

printf打印字符串乱码

不懂就问系列:
有一个问题:
写一个程序,让用户输入 5 句话,并计算出最长和最短的两句。
要求:使用 1 个二维数组存储用户输入的 5 句话。
代码如下:

#include<stdio.h>
#include<string.h>
#define MAX 1024

int main()
{
    char i;
    int c, j, ch, min, max, temp;

    for (c = 0; c < 5; c++)
    {
      printf("请输入第%d句话:", c + 1);
      for (j = 0; (ch = getchar()) != '\n'; j++)
      {
            i = ch;
      }
    }
    i = '\0';
    min = 0;
    max = min;

    printf("你输入了下边5句话:\n");
    for (c = 0; c < 5; c++)
    {
      printf("%s\n", i);
      temp = strlen(i);
      min = temp < strlen(i) ? c : min;
      max = temp > strlen(i) ? c : max;
    }

    printf("其中最长的是:%s\n", i);
    printf("其中最短的是:%s\n", i);
}

测试时并没有警告;但在实际运行时打印出的字符串却出现了乱码,如图:

找了半天页找不出哪里有问题,想请教给位大大这是什么地方出错了。


IChoose 发表于 2019-5-25 18:30:24

这里是不是想每个字符串后加结尾,要放到循环体内

IChoose 发表于 2019-5-25 18:31:19

结果

聊生于污 发表于 2019-5-25 18:40:08

IChoose 发表于 2019-5-25 18:30
这里是不是想每个字符串后加结尾,要放到循环体内

了解了,感谢你的回答。
页: [1]
查看完整版本: printf打印字符串乱码