gpt4 book ai didi

在 C 中更改二维数组中的信息

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

这更多的是关于使用指针跨多个函数管理单个二维数组的概念性问题。该程序归结为获取一个二维字符矩阵,然后在该矩阵中搜索特定单词。

这是我的两步方法:

1) 逐字符读入文件的函数,将所有非空格字符放入二维矩阵中。然后返回矩阵以便在其他地方进行操作(这是我遇到的麻烦)

2) 采用由 1 创建的二维矩阵并搜索单词的函数

我的第一步问题是指针。我认为最好的想法是在 main 中创建 2D 数组(我知道最大大小是 25x25)并传递该指针,以便函数可以查看/更改矩阵的数据。我根本不知道如何从 main 外部修改 2D 数组。

这是我的第一个函数的片段以及我用来测试它的主要函数。

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

char game[25][25];
char (*g) = game;
buildPuzzle(argv[0], g); //game should be a pointer to the array, correct?

for (int i=0; i<25; i++) {
for (int j=0; j<25; j++) {
printf(" %c ", game[i][j]);
}
printf("\n");
}
}

//This function returns a pointer to the array containing the sorted input file

void buildPuzzle(char fileName[], char *puzzle[25][25]){

int rows = 0;
int colums = 0;
char currentChar = NULL;
//Tests to see if file can open
FILE *f;
f = fopen(fileName, "r");
if (f == NULL) {
printf("Can't open file %s\n", fileName);
exit(420);
}
//Scans through the file char by char.
//If it is a char it puts it in a row/col of puzzle[][] then goes to the next char by fgetc.
currentChar = fgetc(f);
while(1) {
if (currentChar = EOF)
break;
//If it hits the end of the line, it's time to go to the next row.
if (currentChar == '\n'){
rows++;
continue;
}
//Skips spaces
if (currentChar == ' '){
continue;
}
puzzle[rows][colums] = currentChar;
currentChar = fgetc(f);
}
fclose(f);
}

最佳答案

您不需要char (*g) = game;。您可以简单地调用 buildPuzzle(argv[0], game); 并像这样定义您的函数:

void buildPuzzle(char * fileName, char puzzle[25][25])
{
// ...

您必须在 puzzle 参数中包含第二个维度 25,以便编译器知道在第一个维度中每个增量跳过 25 个字符。

关于在 C 中更改二维数组中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34011594/

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