gpt4 book ai didi

c - 分配新字符后出现奇怪的输出

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

这是我的代码[注意:不是完整的代码,但只有这些会导致问题]

#define RNC 3
int main(int argc, const char *argv[])
{

char *labyrinth[RNC + 2] = {
"00000",
"01100",
"00101",
"01111",
"00101",
};

char *markedLabyrinth[RNC + 2] = {
"00000",
"00000",
"00000",
"00000",
"00000",
};

printf("Test = %s\n", markedLabyrinth[1]);
printf("Please specific where is the exit point Ex. [ 3 5 ] : ");
scanf("%d %d", &K, &L);

int i, row, column;
markedLabyrinth[1] = (char *)malloc(sizeof(char) * 6);
markedLabyrinth[1][2] = '1';
printf("Test After = %s\n", markedLabyrinth[1]);
}

.

这是我编译器的输出

Test = 00000
Please specific where is the exit point Ex. [ 3 5 ] : 3 4 // this is my input, [ignore it ^^]
Test After = @q1

如您所见,我尝试仅将 ma​​rkLabyrinth[1][2] 分配给 = '1',输出应该是

Test After = 00100

但它给了我

Test After = @q1

请帮我看看这段代码,谢谢

最佳答案

在您分配新字符串的行中您还没有初始化它。每当您分配时,最好将存储初始化为已知值。例如,

markedLabyrinth[1] = (char *)malloc(sizeof(char) * 6);

markedLabyrinth[1] = (char *)malloc(sizeof(char) * 6);
strcpy(markedLabyrinth[1], "00000");

请注意,您实际上已经取消引用了字符串的原始值。在您的简单情况下,它是文字,所以没关系。如果您第二次执行此代码,您将放弃对前一个字符串的引用并会造成内存泄漏。在这种情况下,您应该使用 free() 之前的引用来避免内存分配的其他问题。

关于c - 分配新字符后出现奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52905129/

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