|
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;
}
本帖最后由 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数组的内容时使用这些长度。你可以通过创建一个数组来存储长度来实现这一点。
以下是修改后的代码:
|