我使用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");
}
有人能解释一下这三个函数的区别吗?我对它们很困惑。
我的主要问题是,我有一个文件,我对其进行了分词处理,但问题在于,当我在文件中分词单词“atoms”时,我必须停止分词过程。
我首先尝试使用strcmp()
,但不幸的是,当它到达文件中放置单词“atoms”的位置时,它没有停止,而是继续执行,但当我使用memcmp()
或strncmp()
时,它停止了,我很高兴。
但后来我想,如果有这样一种情况,即有一个字符串,其中前5个字母是a、t、o、m、s,后面跟着其他字母,该怎么办呢?
不幸的是,我的想法是正确的,因为我使用上述代码通过将word1
初始化为“atomsaaaaa”,word2
初始化为“atoms”,并在if语句中使用memcmp()
和strncmp()
进行测试时返回了0。另一方面,strcmp()
却没有。看来我必须使用strcmp()
。