鱼C论坛

 找回密码
 立即注册
查看: 1395|回复: 4

[已解决]求助

[复制链接]
发表于 2023-4-8 15:53:07 | 显示全部楼层 |阅读模式
3鱼币
#include<stdio.h>
#define N 5
#define M 128
int main()
{
        char a[N][M],ch;
        int i,j,count=0;
        for(i=0;i<5;i++)
        {
                printf("请输入第%d句话:",i+1);
                while((ch=getchar())!='\n')
                {
                        a[i][count]=ch;
                        count++;
                }
        }                                                                           //为什么我运行之后打印出来的是乱码,求解;
        for(i=0;i<5;i++)
        {
                if(i==1)
                printf("你输入了以下5句话:\n");
                for(j=0;j<count;j++)
                {
                        printf("%c",a[i][j]);
                }
                printf("\n");
        }
       
        return 0;
}
最佳答案
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[N][M], ch;
    int i, j, count[N]; // 添加一个数组来存储每个输入行的长度

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

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

最佳答案

查看完整内容

你代码的问题在于你使用了一个单独的变量count来记录所有输入行的长度,然后为每一行打印a数组的每一行,直到该行的计数值。 为了解决这个问题,你需要分别跟踪每个输入行的长度,然后在打印a数组的内容时使用这些长度。你可以通过创建一个数组来存储长度来实现这一点。 以下是修改后的代码:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[N][M], ch;
    int i, j, count[N]; // 添加一个数组来存储每个输入行的长度

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

    printf("你输入了以下5句话:\n");
    for(i = 0; i < N; i++)
    {
        for(j = 0; j < count[i]; j++) // 使用当前行的计数而不是全局计数
        {
            printf("%c", a[i][j]);
        }
        printf("\n");
    }
   
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-8 15:59:39 | 显示全部楼层
咋没内容啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-8 16:00:57 | 显示全部楼层
直接改编辑器编码,utf-8或者gbk
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-8 16:01:10 | 显示全部楼层

有内容了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表