所想如期而遇 发表于 2023-4-8 15:53:07

求助

#include<stdio.h>
#define N 5
#define M 128
int main()
{
        char a,ch;
        int i,j,count=0;
        for(i=0;i<5;i++)
        {
                printf("请输入第%d句话:",i+1);
                while((ch=getchar())!='\n')
                {
                        a=ch;
                        count++;
                }
        }                                                                           //为什么我运行之后打印出来的是乱码,求解;
        for(i=0;i<5;i++)
        {
                if(i==1)
                printf("你输入了以下5句话:\n");
                for(j=0;j<count;j++)
                {
                        printf("%c",a);
                }
                printf("\n");
        }
       
        return 0;
}

isdkz 发表于 2023-4-8 15:53:08

本帖最后由 isdkz 于 2023-4-8 16:00 编辑

你代码的问题在于你使用了一个单独的变量count来记录所有输入行的长度,然后为每一行打印a数组的每一行,直到该行的计数值。

为了解决这个问题,你需要分别跟踪每个输入行的长度,然后在打印a数组的内容时使用这些长度。你可以通过创建一个数组来存储长度来实现这一点。

以下是修改后的代码:
#include<stdio.h>
#define N 5
#define M 128
int main()
{
    char a, ch;
    int i, j, count; // 添加一个数组来存储每个输入行的长度

    for(i = 0; i < N; i++)
    {
      printf("请输入第%d句话:", i + 1);
      count = 0; // 为每行重置计数
      while((ch = getchar()) != '\n')
      {
            a] = ch;
            count++; // 增加当前行的计数
      }
    }

    printf("你输入了以下5句话:\n");
    for(i = 0; i < N; i++)
    {
      for(j = 0; j < count; j++) // 使用当前行的计数而不是全局计数
      {
            printf("%c", a);
      }
      printf("\n");
    }
   
    return 0;
}

所想如期而遇 发表于 2023-4-8 15:59:39

{:10_266:}{:10_266:}{:10_266:}咋没内容啊

豆嘉木 发表于 2023-4-8 16:00:57

直接改编辑器编码,utf-8或者gbk

isdkz 发表于 2023-4-8 16:01:10

所想如期而遇 发表于 2023-4-8 15:59
咋没内容啊

有内容了
页: [1]
查看完整版本: 求助