在c中创建一个char的动态矩阵

Create a dynamic matrix of char in c

我想创建一个动态矩阵来输入一个字符,所以我先创建一个动态矩阵 int 到 switch it to 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;}

但是当我进行此更改以将其切换为 char 矩阵时,它不会读取所有字符,因此它在矩阵完成之前停止读取

   #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;
}

看来你需要写

scanf(" %c",&b);
      ^^^^ 

跳过白色 space 字符,包括对应于按下的 Enter 键的换行符 '\n'

也就是格式字符串从space字符开始时白色space字符被跳过。

注意当不再需要动态分配的数组时,应释放分配的内存。

否则如果你还想读取数组中的 spaces 那么你可以用下面的方式重写 for 循环

for (i = 0; i < r * c; i++)
{
    do scanf("%c",&b); while ( b == '\n' );
    ptr[i] = b;

}