gpt4 book ai didi

c - 这个二维字符数组的字符输入有什么问题?为什么它不接受 K*K 输入的总数?

转载 作者:行者123 更新时间:2023-11-30 20:41:35 24 4
gpt4 key购买 nike

我试图从用户那里获取二维字符数据,但它没有正确地从用户那里获取输入。您能突出显示以下代码中的错误吗?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
int i, j, k;
char **ch;

printf("\nEnter k : ");
scanf("%d",&k);

ch = (char **) malloc (sizeof(char*) * k );
if(ch == NULL) { printf("\n Not enough memory for ch array "); exit(0);}
for(i = 0; i < k; i++) {
ch[i] = (char *) malloc (sizeof(char) * k );
if(ch[i] == NULL) { printf("\n Not enough memory for ch array "); exit(0);}
}

printf("\nenter char matrix ( %d X %d )\n", k,k);
for(i = 0; i < k; i++) {
for(j = 0; j < k; j++) {
scanf("%c", (*(ch + i) + j) );
}
}

printf("\n char matrix : \n");
for(i = 0; i < k; i++) {
for(j = 0; j < k; j++) {
printf("%c ",*(*(ch + i) + j));
}
printf("\n");
}

for(i = 0; i < k; i++) free(*(ch + i));
free(ch);
return 0;
}

我尝试用 int 替换 char。它对于整数确实工作得很好。

stdin 读取 char 有什么问题吗?

最佳答案

问题:

scanf("%c", (*(ch + i) + j) );

scanf("%d",&k); 之后,输入缓冲区中仍然有一个换行符,它成为 char 矩阵的第一个条目。如果您在填充矩阵时输入更多换行符,它们也会成为矩阵条目。

在填充矩阵之前清除输入缓冲区。

int c;
do {
c = getchar();
}while(c != '\n' && c != EOF);
if (c == EOF) {
// input stream broken, yell
}

关于c - 这个二维字符数组的字符输入有什么问题?为什么它不接受 K*K 输入的总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13112397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com