提问人:Nacima 提问时间:11/3/2021 最后编辑:Vlad from MoscowNacima 更新时间:11/3/2021 访问量:148
在 c 中创建 char 的动态矩阵
Create a dynamic matrix of char in c
问:
我想创建一个动态 matix 来输入一个字符,所以我首先从创建一个 int 的动态 matric 开始,然后将其切换到 char 动态矩阵的代码正常工作:'
#include <stdio.h>
#include <stdlib.h>
int main(){
int r , c , b;
int *ptr, count = 0, i;
printf("ROWS ");
scanf("%d",&r);
printf("COLS ");
scanf("%d",&c);
ptr = (int *)malloc((r * c) * sizeof(int));
for (i = 0; i < r * c; i++)
{
scanf("%d",&b);
ptr[i] = b;
}
for (i = 0; i < r * c; i++)
{
printf("%d ", ptr[i]);
if ((i + 1) % c == 0)
{
printf("\n");
}
}
return 0;}
但是当我进行此更改以将其切换到 Matrix of Char 时,它不会读取所有字符,因此它在 Matrix 完成之前停止读取
#include <stdio.h>
#include <stdlib.h>
int main()
{
int r , c ;
int count = 0, i;
char *ptr,b;
printf("ROWS ");
scanf("%d",&r);
printf("COLS ");
scanf("%d",&c);
ptr = (char *)malloc((r * c) * sizeof(char));
for (i = 0; i < r * c; i++)
{
scanf("%c",&b);
ptr[i] = b;
}
for (i = 0; i < r * c; i++)
{
printf("%c ", ptr[i]);
if ((i + 1) % c == 0)
{
printf("\n");
}
}
return 0;
}
答:
0赞
Vlad from Moscow
11/3/2021
#1
看来你需要写
scanf(" %c",&b);
^^^^
跳过空格字符,包括与按下的 Enter 键对应的换行符。'\n'
也就是说,当格式字符串从空格字符开始时,将跳过空格字符。
请注意,当不再需要动态分配的数组时,应释放分配的内存。
否则,如果您想读取数组中的空格,则可以按以下方式重写 for 循环
for (i = 0; i < r * c; i++)
{
do scanf("%c",&b); while ( b == '\n' );
ptr[i] = b;
}
评论
0赞
Nacima
11/3/2021
谢谢它有效,如果你能帮我做我想在函数中返回矩阵??
0赞
Vlad from Moscow
11/3/2021
@You可以就您的下一个问题提出一个新问题。
评论