arrays - 检查字符串是否包含在数组中,如果不包含则追加 (C)
问题描述
我有 2 个数组,一个称为“edges”,其中包含一个城市名称列表,另一个称为 cityNames,它被初始化为一个空字符串。
我想做的是逐个元素地移动边缘数组,看看它是否包含在 cityNames 数组中。如果是,则移动到边中的下一个元素,如果不是,则将该值附加到 cityNames 数组。
下面的代码将 edges[i].startCity 添加到 cityNames 数组,但它不检查重复项,我不知道为什么。
for (int i = 1; i < noEdges; i++) {
for (int j = 0; j < noCities; j++) {
if(strcmp(edges[i].startCity, cityNames[j].cityName) != 0) {
strcpy(cityNames[i].cityName, edges[i].startCity);
}
}
noCities += 1;
}
提前致谢
解决方案
我会假设:
edges
是一个已知长度的结构数组noEdges
,每个结构都包含一个字符串(char 指针或 char 数组)- cityNames 是一个结构数组,其大小至少是不同名称的数量(可能是数组
noEdges
的大小)edges
- 该
cityNames
结构包含一个 char 数组元素,其大小至少为最长名称 + 1(终止 null 时为 +1)
然后下面的代码可以给出唯一的名称:
noCity = 0;
for (int i = 0; i < noEdges; i++) {
int dup = 0; // expect edges[i].startCity not to be a duplicate
for (int j = 0; j < noCities; j++) {
if(strcmp(edges[i].startCity, cityNames[j].cityName) == 0) {
dup = 1; // got a duplicate
break; // no need to go further ...
}
}
if (dup == 0) { // not a duplicate: add it to cityNames
strcpy(cityNames[noCities].cityName, edges[i].startCity);
noCities += 1; // we now have one more city
}
}
}
推荐阅读
- excel - 返回最大日期的行号
- python - 使用numpy中另一个数组的值从一个数组中选择值
- javascript - Angular - 在另一个组件中使用由回调设置的服务属性
- c# - 如何通过引用将 int 从 C# 传递到 C++?
- python - 在有效负载中传递多个或零值以使用 Python 调用 REST API
- postgresql - PostgreSQL UPDATE 似乎没有更新某些行
- database - 无法连接到 EC2 实例上运行的 PostgreSQL 数据库
- xcode - AppCode 中的 Xcode 遗留构建系统
- c# - 如何使用asp.net按钮通过jquery进行验证然后进入后台代码web表单
- python - 在 Linux 中使用 python 执行 Shell 命令