Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่าง strncmp() และ strcmp() ใน C/C++

strncmp()

เปรียบเทียบสตริงซ้ายกับขวา จนถึงจำนวนตัวอักษรที่กำหนด ทำงานคล้าย strcmp() ส่งคืน:

  • > 0 หากตัวอักษรของสตริงซ้ายมีค่า ASCII มากกว่า
  • < 0 หากตัวอักษรของสตริงซ้ายมีค่า ASCII น้อยกว่า
  • = 0 หากเท่ากัน (ในจำนวนตัวอักษรที่กำหนด)

รูปแบบ

int strncmp(const char *leftString, const char *rightString, size_t number);

number − จำนวนตัวอักษรสูงสุดที่จะเปรียบเทียบ

ตัวอย่าง

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "blank";
    char str2[] = "Hello World!";
    int result = strncmp(str1, str2, 1);
    if (result == 0)
        printf("Strings are equal");
    else
        printf("Strings are unequal");
    printf("\nValue returned by strncmp() is: %d", result);
    return 0;
}

ผลลัพธ์

Strings are unequal
Value returned by strncmp() is: 26

strcmp()

เปรียบเทียบสตริงแบบ Lexicographical (ตัวอักษรต่อตัวอักษร) จนกว่าจะเจอความแตกต่างหรือ NULL terminator ประกาศใน <string.h>

รูปแบบ

int strcmp(const char *leftString, const char *rightString);

ตัวอย่าง

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "hello World!";
    char str2[] = "Hello World!";
    int result = strcmp(str1, str2);
    if (result == 0)
        printf("Strings are equal");
    else
        printf("Strings are unequal");
    printf("\nValue returned by strcmp() is: %d", result);
    return 0;
}

ผลลัพธ์

Strings are unequal
Value returned by strcmp() is: 32

สรุปความแตกต่างหลัก

ฟีเจอร์strcmp()strncmp()
เปรียบเทียบทั้งสตริงจนจบจำนวนตัวอักษรที่กำหนด
พารามิเตอร์2 ตัว3 ตัว (มี number)
ใช้เมื่อต้องการเปรียบเทียบสตริงทั้งหมดต้องการเปรียบเทียบบางส่วน