gpt4 book ai didi

C - 为什么这个函数将数组打印为 NULL 字符串?

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

我在处理 C 中的数组时遇到问题。你看,这是我的代码的一部分,它基本上读取一个文件并组织葡萄牙第三级行政区地 block 顶点的坐标 - 其中我们称之为弗雷格西亚斯。在练习的这一部分中,我需要写入文件中出现的所有二级行政部门的名称 - Concelhos(在我的代码中已在数组 Cartography 制图中明确定义,这不是问题)。

我想做一个函数来显示文件中出现的 Concelhos,并且我想用这个确切的子函数和函数来编写,以便稍后可以更改一些内容,但由于某种原因,它不会打印“command_list_concelhos”中的字符串",它只打印 NULL 字符串。我不知道为什么会发生这种情况,特别是因为如果我在“read_string_concelhos”中的 for 内部和外部执行 printf ,它就会正确执行。

很抱歉,如果这个问题解释错误、太大或者只是我遗漏了一个小细节,但我没有更好的方法来解释它......

#define MAX_STRING 256
#define MAX_NAMES 50

typedef char String[MAX_STRING];

typedef struct {
String list[MAX_NAMES];
int n_strings;
} StringList;

int read_string_concelhos(StringList s ,Cartography cartography, int n)
{
int i, j=1;
strcpy (s.list[j-1], cartography[0].identification.concelho);
for ( i = 0 ; i < n ; i++){
if ( strcmp(cartography[i].identification.concelho, s.list[j-1]) != 0){
strcpy(s.list[j] , cartography[i].identification.concelho);
j++;
}
}
return j; // n_strings
}

void command_list_concelhos(Cartography cartography, int n)
{
StringList s;
s.n_strings = read_string_concelhos(s, cartography, n);
int i;
for(i = 0; i < s.n_strings; i++ )
{
printf("\n", s.list[i]);
}
}

Fail

How it should look like

最佳答案

int read_string_concelhos(StringList s ,制图制图, int n)
应更改为
int read_string_concelhos(StringList* s ,制图制图, int n)

在函数 int read_string_concelhos(StringList* s ,Cartography cartography, int n) { ... } 中,所有 s.list[...] 应该更改为 s->list[...]。这样,参数 s 是一个指针,因此 strcmp 将粘贴到 command_list_concelhos 中声明的 s,这是所需的行为。

关于C - 为什么这个函数将数组打印为 NULL 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53688779/

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