この小さなコードを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");
}
私はこれらの3つの機能と混同しているので、誰かが私に違いを説明できますか?
私の主な問題は、その行をトークン化するファイルがあることです。問題は、ファイル内の「アトム」という単語をトークン化するときに、トークン化のプロセスを停止する必要があることです。
最初に試しstrcmp()
ましたが、残念ながらファイルに「アトム」という単語が入るところまで止まらず続けましたが、どちらかを使うmemcmp()
とstrncmp()
止まって嬉しかったです。
しかし、最初の5文字がa、t、o、m、sで、その後に他の文字が続く1つの文字列がある場合はどうなるか、と思いました。
word1
残念ながら、上記のコードを使用して「atomsaaaaa」とアトムword2
に初期memcmp()
化し、ifステートメントで0を返したので、私の考えは正しかったです。strncmp()
一方strcmp()
、そうではありませんでした。使用しなければならないようstrcmp()
です。