Я написал эту небольшую часть кода в C, чтобы протестировать функции memcmp()
strncmp()
strcmp()
в C.
Вот код, который я написал:
#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()
, но, к сожалению, когда он дошел до точки, где слово "атомы" было помещено в файл, оно не остановилось, и оно продолжалось, но когда я использовал либо memcmp()
, либо strncmp()
он остановился, и я был счастлив.
Но тогда я подумал, что если будет случай, когда есть одна строка, в которой первые 5 букв являются a, t, o, m, s, за ними следуют другие буквы.
К сожалению, мои мысли были правильными, поскольку я тестировал его с использованием вышеприведенного кода, инициализируя word1
до "atomaaaaa" и word2
для атомов и memcmp()
и strncmp()
в операторах if, возвращаемых 0.On другой рука strcmp()
этого не сделала. Кажется, что я должен использовать strcmp()
.