【发布时间】:2021-05-10 23:46:30
【问题描述】:
我正在处理一个有两个主要文件的项目。本质上,该程序读入一个文本文件,该文件定义了一个带有键值映射的字典。每个键都有一个唯一的值,文件的格式如下,每个键值对都在自己的行上:
ipsum i%#@!
fubar fubar
IpSum XXXXX24
Ipsum YYYYY211
然后程序从标准输入读取输入,如果任何“单词”与字典文件中的键匹配,它们将被替换为值。大小写有点小——这是“匹配优先级”的顺序
- 确切的单词在替换集中
- 除了第一个字符之外的所有字符都转换为小写的单词在替换集中
- 完全转换为小写的单词在替换集中
意思是如果准确的单词在字典中,它会被替换,但如果不是,则检查下一个可能性 (2),依此类推...
我的程序通过了我们提供的基本案例,但随后终端显示 输出与参考二进制文件不同。
我查看了这两个文件(不是 c 文件,而是二进制文件),一个非常长,包含大量数字,另一个只有一行随机字符。所以这并没有真正帮助。我还查看了我的代码并进行了一些小测试,但看起来还可以吗?一位朋友建议我确保我在 processInput() 中考虑了 null 运算符并且我已经是(或者至少我认为是这样,如果我错了,请纠正我)。我还将 getchar() 转换为 int 以正确检查 EOF,并为 char 数组分配了额外的空间。我也试过vimdiff 并且更加困惑。我希望得到一些帮助来调试这个,拜托!我整天都在做这件事,我很困惑。
【问题讨论】:
-
对不起!我不知道这是必需的。最初我担心如果我把它全部放在那里会很长而且很混乱。无论如何,它现在起来了!谢谢你告诉我
-
你有函数。你可以测试它们。
-
stringEquals函数存在问题(但不是您要查找的问题)。相等的哈希值与相等的字符串不同。例如,字符串"Bb"和"CA"具有相同的哈希值。我认为您应该将void指针转换为char指针,然后使用strcmp检查字符串是否相等。 -
@user3386109 谢谢!我修好了。任何想法我正在寻找的问题是什么?
-
@wildplasser 我正在尝试
标签: c string dictionary binary stdin