【问题标题】:Check if a string exists in an array, if not then add it to the array in C检查数组中是否存在字符串,如果不存在则将其添加到 C 中的数组中
【发布时间】:2017-06-15 21:03:36
【问题描述】:

在 C 中如何搜索字符串数组中是否存在字符串,如果不存在,则将其添加到字符串数组中。

在我的代码中,我得到了一个文件路径 -

char *file_path;

我需要检查它是否已经存在于字符串数组(file_path 数组)中,如果存在则返回 else 将此 file_path 添加到字符串数组中。

有人可以帮我用 C 语言编写这段代码吗?

【问题讨论】:

  • 问题出在哪里?
  • 欢迎来到 StackOverflow。请采取tour,学习提出好问题stackoverflow.com/help/how-to-ask,制作minimal reproducible example。一个 MCVE 应该包括各种样本输入(说明所有方面)和所需的输出。
  • 我无法在 C 中提出确切的代码。我有伪代码并试图提出 C 代码。
  • 我们不是“做我的功课”服务!
  • 对不起,我是 C 新手,所以我正在寻找一些指针。任何帮助表示赞赏。问候, Riju

标签: c arrays string find add


【解决方案1】:
for(int i=0; i<dim; i++){
    if(strcmp(file_path,array[i])==0) return 0;
}

//if it exits the loop it means that it did not find the string 

array=realloc(array,(dim+1)*sizeof(char*));
strcpy(array[dim],file_path);

这应该没问题。请对数组、字符串和函数进行研究。如果您愿意改进代码,即 strncpy() 实际上比更简单的 strcpy() 更好。 还可以查看操作动态内存的函数(Malloc、calloc、realloc...) 我还假设您确实以正确的方式声明了数组(作为 char* 数组 [dim])。 此外,您应该检查各种函数的返回值,但我会让您进行研究,因为看起来您刚刚开始使用 C 编程。

【讨论】:

  • realloc()的结果直接赋值给指向被重新分配对象的指针总是错误的; realloc() 可以在发生错误时返回一个空指针,现在你有内存泄漏和数据丢失。先分配一个临时指针,在重新分配array之前检查是否成功重新分配。
  • @DavidBowling 对,实际上我指定代码应该被解释为指导方针,错误管理留给谁来实现整个事情。我觉得帖子的作者也不太能理解c代码。
猜你喜欢
  • 2016-01-21
  • 2022-01-17
  • 1970-01-01
  • 2017-01-27
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多