c - 如何使用指针到指针的指针在此链表中插入项

标签 c pointers

美好的一天, 我正在开发一款填充游戏,其中:两名玩家通过将游戏大师获得的游戏棋子(以可执行 Ruby 程序的形式)放在棋盘上来获得分数。当游戏棋子无法再放置时,游戏结束。

下面是用于读取我的玩家编号和起始棋子的代码:

***void init_player(t_player *player)***
{
    char    *line;

    get_next_line(0, &line);
    if ((!(ft_strncmp(line, "$$$ exec p", 10))))
    {
        if (line[10] == '1')
        {
            player->id = '1';
            player->my_shape = 'O';
            player->current_shape = 'o';
        }
        else
        {
            player->id = '2';
            player->my_shape = 'X';
            player->current_shape = 'x';
        }
        ft_strdel(&line);
        return ;
    }
    return ;
}
int     main(void)
{
    t_player    *me;
    me = (t_player *)malloc(sizeof(*me));

    init_player(me);
    ft_putchar(me->my_shape);
    ft_putchar('\n');
    return (0);
}

现在我需要帮助来读取 map 大小,方法是创建一个指向大小为 n + 1 的指针,并且 n 为 15,请参阅下面的 map 。或者我可以尝试你们可以建议的另一种方法。谢谢 查看下面的 map

$$$ exec p1 : [players/abanlin.filler]
***Plateau 15 17:***
    01234567890123456
000 .................
001 .................
002 .................
003 .................
004 .................
005 .................
006 .................
007 .................
008 ..O..............
009 .................
010 .................
011 .................
012 ..............X..
013 .................
014 .................
Piece 1 2:
**

最佳答案

您可以像下面这样阅读 map ,

#include <stdio.h>
#include <stdlib.h>
#define ROW 5
#define COL 5

int main() {
    int i,j;
    char **board;
    if((board = (char **)calloc(sizeof(char *) , ROW)) == NULL){
        printf("calloc failed at memory allocation for dptr\n");
    }
    printf("Enter board of size %d x %d", ROW, COL);
    for(i = 0; i < ROW; i++){
        if((board[i] = (char *)calloc(sizeof(char) , COL)) == NULL){
            printf("calloc failed at memory allocation for ptr %d\n", i);
        }
        for(j = 0; j < COL; j++){
            if(scanf("%c",&board[i][j]) < 1){
                printf("scanf failed!");
            }
        }
    }
//printing board
    for(i = 0; i < ROW; i++){
        for(j = 0; j < COL; j++){
            printf("%c ",board[i][j]);
        }
        printf("\n");
    }
    for(i = 0; i < ROW; i++){
        free(board[i]);
    }
    free(board);
    return 0;
}

注意:您也可以采用用户表单的大小,而不是定义 ROW 和 COL。

关于c - 如何使用指针到指针的指针在此链表中插入项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948608/

相关文章:

c - Valgrind - 复制/释放数组时内存泄漏

c - 是否有设置进程堆栈/堆内存分配的功能?

c++ - 为什么我的指针变量持有其他地址,但仍成功指向变量?

c - void star 和 & 在 C 中

c - 在 C 中返回字符串。为什么这有效?

c - 递归到迭代

c - C 数组中 p[-2] 的输出

C++ 交换两个 void* 的内容

C# - 更改函数内的数组值

c - Linux内核模块编程Makefile错误