c - strcmp 对于相等的字符串不返回 0

2024-02-14

因此,我尝试广泛寻找解决方案,但只能真正找到其中一个字符串缺少新行或空字节的帖子。我相当确定这里的情况并非如此。

我正在使用以下函数将单词与包含单词列表的文件进行比较,其中每行一个单词(函数中的字典)。这是代码:

int isWord(char * word,char * dictionary){
  FILE *fp;
  fp = fopen(dictionary,"r");
  if(fp == NULL){
    printf("error: dictionary cannot be opened\n");
    return 0;
  }
  if(strlen(word)>17){
    printf("error: word cannot be >16 characters\n");
    return 0;
  }
  char longWord[18];
  strcpy(longWord,word);
  strcat(longWord,"\n");
  char readValue[50] = "a\n";
  while (fgets(readValue,50,fp) != NULL && strcmp(readValue,longWord) != 0){
    printf("r:%sw:%s%d\n",readValue,longWord,strcmp(longWord,readValue));//this line is in for debugging
  }
  if(strcmp(readValue,longWord) == 0){
    return 1;
  }
  else{
    return 0;
  }
}

该代码编译时没有错误,该函数可以很好地读取字典文件,并打印其中出现的单词列表。我遇到的问题是,即使两个字符串相同,strcmp 也不会返回 0,因此该函数将为任何输入返回 false。

例如我得到:

r:zymoscope
w:zymoscope
-3

有任何想法吗?我觉得我一定错过了一些明显的东西,但在我的搜索中找不到任何东西。


我看到你正在附加一个newline到你的测试字符串来尝试处理以下问题fgets()保留行结尾。最好从源头解决这个问题。从文件读取后,您可以立即删除所有类似这样的尾随内容。

readValue [ strcspn(readValue, "\r\n") ] = '\0';   // remove trailing newline etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c - strcmp 对于相等的字符串不返回 0 的相关文章

随机推荐

  • .htaccess 破坏了所有 css 和 js,尽管我设置了绝对路径

    这是我的 htaccess 文件 Options FollowSymlinks RewriteEngine On RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d R
  • 根据列中的范围扩展 pandas 数据框

    我有一个像这样的熊猫数据框 Name SICs Agric 0100 0199 Agric 0910 0919 Agric 2048 2048 Food 2000 2009 Food 2010 2019 Soda 2097 2097 The
  • 如何从命令行运行 db2 sql 命令?

    我怎样才能跑 sql命令UPDATE CONTACT SET EMAIL ADDRESS email protected cdn cgi l email protection 通过命令行 对于 db2 数据库 on linux 来自 she
  • Firefox 中未发送 Ajax 请求,错误未知

    在 Firefox 27 0 1 Fedora 20 jQuery 1 11 0 中执行 GET 同步 ajax 请求时 ajax ajaxParam then function r html r html function jqXHR c
  • 如何覆盖 Vue 组件中的作用域样式?

    让我们保存一下我有一个 Vue我从 Github 上的某个地方获取的组件 我们将其称为 CompB 并为蓝色标头添加一个 CSS 规则集 CompB Vue 我不拥有的依赖项 可能是从 Github 中提取的
  • 默认情况下,SQLite 真的不保留外键约束的数据完整性吗?

    较新版本的 SQLite支持外键约束 https stackoverflow com questions 3297363 implement use foreign keys in sqlite 可以定义 CREATE TABLE MAST
  • 使用 jquery 进行文本框验证

    我是 JQuery 新手 我想使用 jquery 对四个文本框进行验证 我已经完成的编码
  • onClick 函数“this”返回窗口对象

    我的 JavaScript 应用程序遇到了一个令人头疼的问题 如果我写一个这样的元素 li li 我得到 李 但是如果我这样做 li li 其中 foo 是 function foo alert this tagName 我得到 未定义 我
  • 在Python 2.7中编码时如何处理Linux上带空格的路径?

    我有一个 python 脚本 用于处理 Linux Mint 上目录中的文件 部分代码如下 path to dir home user Im a folder with libs to install if os path isdir pa
  • AngularJS http 返回值

    我想在 AngularJS 中编写一个返回值的函数 实际上它是一个字符串 该值是由 http 请求返回的 但异步让我发疯 我的第一次尝试是 this readParameter function key http method GET ur
  • Xamarin Forms - Prism - OnNavigedTo 调用两次

    因此 我已经使用 prism 开发了一个应用程序 2 个月 现在我意识到当我从 MasterDetailPage 中选择一个项目时 OnNavigedTo 方法被调用了两次 我不知道为什么会发生这种情况 我确信我错过了一些东西 但我大约需要
  • 实体框架核心代码优先:多对多关系的级联删除

    我正在使用 Entity Framework Core 版本 EntityFramework Core 7 0 0 rc1 final 由 SQL Server 2012 Express DB 支持 我需要建立一个多对多关系模型Person
  • 5秒后自动滚动页面到div

    我是 javascript 新手 现在我正在尝试这样做 如标题所示 我有一个页面 顶部有一个 div 与包含视频的页面一样大 后面是几个部分 例如这 div style height 100 width 100 div section st
  • IE9 现在会支持 WebSocket 吗?

    这个问题很简单 老话题是here https stackoverflow com questions 3377096 will ie9 support webgl and or websockets 自从 IE9 将于 2011 年 3 月
  • Verilog 中的“net”代表什么?

    我刚刚开始学习Verilog 据我了解 Verilog有net数据类型 什么是net代表 网络就是这样一种数据类型 您不使用它来存储值 它们代表物理连接 您可以将线路视为一种网络数据类型 你可以去网上看看更多here http www ee
  • 使用 KernelClient API 在 ipython 内核中执行代码

    我有一个现有的 ipython 内核 带有一个通信文件 path comm file json 我想使用内核客户端 API 执行该内核中的代码 实际上我并不挑剔 任何方法都可以 我明白这是从 jupyter 做事情的最好方法文档 https
  • 从事神经网络项目[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 神经网络是否需要仅采用二进制训练集
  • Trello 如何如此快速地显示历史记录?

    Trello 显示自论坛成立以来任何用户所做的一切的历史日志 同样 如果您单击特定的卡片 它会显示任何人与该卡片相关的任何操作的历史记录 跟踪无限期保留的每个更改 添加 删除必须收集大量数据 并且还可能成为写入历史记录日志的瓶颈 假设它立即
  • 如何在提交之前做一些事情?

    我有一个表单 其中有一个提交表单的按钮 我需要在提交发生之前做一些事情 我尝试做onClick在该按钮上 但它发生在提交之后 我无法共享代码 但一般来说 我应该在 jQuery 或 JS 中做什么来处理这个问题 如果您有这样的表格
  • c - strcmp 对于相等的字符串不返回 0

    因此 我尝试广泛寻找解决方案 但只能真正找到其中一个字符串缺少新行或空字节的帖子 我相当确定这里的情况并非如此 我正在使用以下函数将单词与包含单词列表的文件进行比较 其中每行一个单词 函数中的字典 这是代码 int isWord char