我在处理C中的数组时遇到问题 . 你看,这是我的代码的一部分,它基本上读取文件并组织葡萄牙第3级管理部门的包裹顶点的坐标 - 我们称之为Freguesias . 在本练习的这一部分中,我需要编写出现在文件中的所有2级管理分区的名称 - Concelhos(已在我的代码中很好地定义在阵列制图制图中,这不是问题) .
我想做一个函数,显示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]);
}
}
1 回答
int read_string_concelhos(StringList s ,Cartography cartography, int n)
应该改为
int read_string_concelhos(StringList* s ,Cartography cartography, int n)
在函数
int read_string_concelhos(StringList* s ,Cartography cartography, int n) { ... }
中,所有_56160都应该更改为s->list[...]
. 这样,参数s
是一个指针,因此strcmp
将粘贴到command_list_concelhos
中声明的s
,这是所需的行为 .