gpt4 book ai didi

C : segmentation fault 11 结构中的 Char**

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:55 24 4
gpt4 key购买 nike

我有一个问题,试图在 C 语言的结构中使用 char**。

我的代码的目的是保留字符串的历史记录。该结构有 2 个变量:

codeJuste,这是一串 NB_PION 字符。codesProposes,它是 NB_COUPMAX 个案的数组。每个案例都保留一个代码,该代码是一串 NB_PION 字符。

我正在尝试写入 codesProposes 的每个案例,但出现段错误错误。预先感谢您试图帮助我(抱歉我的英语不好,我是法国人)。

这是我的测试代码:

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

#define NB_PION 4
#define NB_COULEUR 4
#define NB_COUPMAX 6

//Définition d'une structure
typedef struct _Partie{
char* codeJuste;
char** codesProposes;
} Partie;


int main (int argc,char** argv[]){
Partie maPartie;

maPartie.codeJuste = malloc((NB_PION+1) * sizeof(char));
strcpy(maPartie.codeJuste,"AAAA");

maPartie.codesProposes = malloc(NB_COUPMAX * ((NB_PION + 1) * sizeof(char)));
strcpy(maPartie.codesProposes[0],"BBBB");
strcpy(maPartie.codesProposes[1],"CCCC");

printf("1:%s \n",maPartie.codeJuste);
printf("2:%s \n",maPartie.codesProposes[0]);
printf("3:%s \n",maPartie.codesProposes[1]);
}

最佳答案

改变这个:

maPartie.codesProposes = malloc(NB_COUPMAX * ((NB_PION + 1) * sizeof(char)));

对此:

maPartie.codesProposes = malloc(NB_COUPMAX * sizeof(char*));
for (i=0; i<NB_COUPMAX; i++)
maPartie.codesProposes[i] = malloc((NB_PION+1) * sizeof(char));

不要忘记在稍后执行程序时释放所有内容:

for (i=0; i<NB_COUPMAX; i++)
free(maPartie.codesProposes[i]);
free(maPartie.codesProposes);

关于C : segmentation fault 11 结构中的 Char**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450623/

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