gpt4 book ai didi

c - 无法在 If 语句中检索或存储二维数组位置

转载 作者:行者123 更新时间:2023-11-30 14:36:43 25 4
gpt4 key购买 nike

我正在尝试解决这个迷宫问题,但是,我现在所拥有的代表了一个迷宫txt文件,该文件在运行时会创建维度(行和列)并打印出矩阵,其中“b”也是如此作为“起点”的空格和“s”

我正在尝试获取此矩阵中“s”所在的起始坐标。

Here is how the maze.txt file looks like:

bbbb bbbbb
bb bbb
b bb b bbb
bb b b b
bb bbb bb
bb b b
bb b b bbb
bb s bb
bbbbbbbbbb



Here is my function to create the matrix:

void CreateGrid(FILE* fp, int rowCount, int colNum)
{
int i, j;
int startPos[2];

int dimensions[rowCount][colNum];

for (i = 0; i < rowCount; i++) {
for (j = 0; j < colNum; j++) {
char brick = getc(fp);

if (brick == "s"){
startPos[0] = i;
startPos[1] = j;

}
dimensions[i][j] = brick;


printf("%c", dimensions[i][j]);
}



}
printf("\n%d %d", startPos[0], startPos[1]);



Expected Result --> x: 7, y: 7


Actual Result --> 0 0

我的逻辑是,由于它按行和列扫描每个字符,它可以指示字母 's' 的位置,并且从中我可以检索其在循环中的当前位置,但它似乎不是案例。

我不确定这是否是内存分配错误,但我对 C 有点陌生,所以这对我来说有点困惑,因为我知道这可以在更高级的语言中工作。

最佳答案

我不确定编译器如何没有返回错误,但尝试在 if 语句中添加单引号:

使用if (brick == 's'){代替if(砖==“s”){

双引号是字符串,因此在这里您将指向“s”的指针与保存在“brick”变量中的字符进行比较。

您正在打印的值未初始化,因为 if 永远不会执行,而 0 是最有可能的情况。

我建议在编写/调试代码时使用 -Wall 编译器选项,对于这种情况,例如输出警告:指针和整数之间的比较[默认启用]

关于c - 无法在 If 语句中检索或存储二维数组位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57891155/

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