在 c 中创建 char 的动态矩阵

Create a dynamic matrix of char in c

提问人:Nacima 提问时间:11/3/2021 最后编辑:Vlad from MoscowNacima 更新时间:11/3/2021 访问量:148

问:

我想创建一个动态 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;
}
C 矩阵 字符 malloc scanf

评论

0赞 Alaa Mahran 11/3/2021
请为您的问题提供示例输入及其预期输出

答:

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可以就您的下一个问题提出一个新问题。