我用 C 编写了一小段代码来测试 C 中的memcmp()
strncmp()
strcmp()
函数。
这是我写的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *word1="apple",*word2="atoms";
if (strncmp(word1,word2,5)==0)
printf("strncmp result.\n");
if (memcmp(word1,word2,5)==0)
printf("memcmp result.\n");
if (strcmp(word1,word2)==0)
printf("strcmp result.\n");
}
有人可以解释我的区别,因为我对这三个功能感到困惑吗?
我的主要问题是我有一个文件,我在其中标记了它的行,问题是当我标记文件中的“原子”一词时,我必须停止标记过程。
我第一次尝试strcmp()
,但不幸的是,当它到达文件中放置“原子”一词的位置时,它并没有停止而是继续,但是当我使用 thememcmp()
或 thestrncmp()
时它停止了,我很高兴。
但后来我想,如果有一个字符串的前 5 个字母是 a,t,o,m,s 并且后面跟着其他字母怎么办。
不幸的是,我的想法是正确的,因为我使用上面的代码通过初始化word1
为“atomsaaaaa”和word2
原子并且memcmp()
在strncmp()
if 语句中返回 0 来测试它。另一方面strcmp()
,它没有。看来我必须使用strcmp()
.