c - 为什么我不能在 strcmp() 中使用搭配?
问题描述
以下代码不起作用:
char text[10];
scanf(" %s", &text);
if (strcmp(text, "some text") == 0)
puts("some text");
但是当我改变'if part'时,一切都很好:
if (strcmp(text, "sometext") == 0)
为什么它会以这种方式工作以及如何解决它?
解决方案
问题不在于您的strcmp
电话,而在于您的scanf
电话!当您键入some text
作为输入时,scanf
将在第一个空格处停止读取,因此您的text
字符串将是“some” - 因此,strcmp
调用将(正确)返回非零,因为这与“some text”不同.
有关scanf
, 空格和%s
格式的此功能的更多信息,请参阅此主题:如何使用 scanf 允许输入空格?
推荐阅读
- jenkins - 配置 Jenkins 备份插件
- c++ - 使用 CreateProcess 函数将参数传递给 cmd
- python - 在 python 中使用 pandas 数据框创建 SQL 查询
- css - 如何在元素较窄时居中,但在比容器宽时向左对齐?
- angular - “AnimationEvent_2”类型的参数不可分配给“AnimationEvent”类型的参数
- javascript - 在 ionic 中选择文本应该触发一个事件?如何?
- pytorch - PyTorch 中的批量 index_fill
- clojure - Clojure deps.edn 依赖覆盖问题
- for-loop - 我不知道 forEach 和 for 之间的区别
- javascript - 当前类在 JavaScript 中处于非活动状态时如何禁止单击功能?