tengqs 发表于 2020-8-27 14:15:23

数组的存储与输出

#define NUM 5

int main()
{
    char h;
    int i, j;
    char ch;

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

    printf("你输入了下面%d句话:\n", NUM);

    for (i = 0; i < NUM; i++)
    {
      printf("%s\n", h);
    }

    return 0;



将用户输入的数据存储的数组 h 中并输出,但是我输出的全是乱码?
以下是输出内容:
请输入第1句话:dasdai
请输入第2句话:dasdioj
请输入第3句话:daudajdo
请输入第4句话:daksdu
请输入第5句话:daidd
你输入了下面5句话:
烫烫烫
烫烫烫?
烫烫烫烫
烫烫烫
烫烫?

xiaosi4081 发表于 2020-8-27 14:21:54

本帖最后由 xiaosi4081 于 2020-8-27 14:23 编辑

#define NUM 5

int main()
{
    char h;
    int i, j;
    char ch;

    for (i = 0; i < NUM; i++)
    {
      printf("请输入第%d句话:", i + 1);
      while((ch = getchar()) != '\n');
      {
            h = ch;
      }
      h = '\0';
    }

    printf("你输入了下面%d句话:\n", NUM);

    for (i = 0; i < NUM; i++)
    {
      printf("%s\n", h);
    }

    return 0;
}

baige 发表于 2020-8-27 14:43:32

本帖最后由 baige 于 2020-8-27 14:45 编辑

#include <stdio.h>
#define NUM 5

int main()
{
        char h;
        int i, j;
        char ch;

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

        printf("你输入了下面%d句话:\n", NUM);

        for (i = 0; i < NUM; i++)
        {
                printf("%s\n", h);
        }

        return 0;
}
下面这句话结尾多了个分号,去掉就可以了
for (j = 0; (ch = getchar()) != '\n'; j++);

baige 发表于 2020-8-27 14:49:29

本帖最后由 baige 于 2020-8-27 14:51 编辑

乱码的原因是你前面都没有赋值,当你输入换行时内层循环结束, 此时对应的j是你每次输入字符个数,对数组的j位置进行赋值为‘\0’, 前面的位置都没有赋值
页: [1]
查看完整版本: 数组的存储与输出