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

ฟังก์ชัน strncmp() ในภาษา C

ความหมาย

strncmp() เปรียบเทียบ string สองตัวสูงสุด n ตัวอักษรแรก คืนค่าเป็น integer แสดงผลการเปรียบเทียบ

Prototype

int strncmp(const char *str1, const char *str2, size_t n);

พารามิเตอร์

  • str1 - string ตัวแรก
  • str2 - string ตัวที่สอง
  • n - จำนวนตัวอักษรสูงสุดที่จะเปรียบเทียบ

คืนค่า

  • 0 - string ทั้งสองเท่ากัน (ใน n ตัวแรก)
  • > 0 - str1 มากกว่า str2 (ค่า ASCII ของตัวอักษรที่ต่างกันแรก)
  • < 0 - str1 น้อยกว่า str2

ตัวอย่างโปรแกรม: เปรียบเทียบ 4 ตัวอักษรแรก

#include <stdio.h>
#include <string.h>
int main() {
    char string1[25], string2[25];
    int value;
    printf("ป้อน String 1: ");
    fgets(string1, sizeof(string1), stdin);
    string1[strcspn(string1, "\\n")] = '\\0';
    printf("ป้อน String 2: ");
    fgets(string2, sizeof(string2), stdin);
    string2[strcspn(string2, "\\n")] = '\\0';
    // เปรียบเทียบ 4 ตัวอักษรแรก
    value = strncmp(string1, string2, 4);
    if (value == 0)
        printf("'%s' เหมือน '%s' (4 ตัวแรก)\\n", string1, string2);
    else if (value > 0)
        printf("'%s' มากกว่า '%s'\\n", string1, string2);
    else
        printf("'%s' น้อยกว่า '%s'\\n", string1, string2);
    return 0;
}

ผลลัพธ์ตัวอย่าง

Run 1:
ป้อน String 1: Welcome
ป้อน String 2: TO my World
'Welcome' มากกว่า 'TO my World'
Run 2:
ป้อน String 1: welcome
ป้อน String 2: welcome
'welcome' เหมือน 'welcome' (4 ตัวแรก)

ตัวอย่างเพิ่มเติม

char a[10] = "the";
char b[10] = "there";
strncmp(a, b, 3); // คืนค่า 0 เพราะ "the" == "the" (3 ตัวแรก)

ความแตกต่างระหว่าง strcmp และ strncmp

ฟังก์ชันการเปรียบเทียบใช้เมื่อ
strcmpเปรียบเทียบจนจบ string (เจอ \\0)ต้องการเปรียบเทียบ string ทั้งหมด
strncmpเปรียบเทียบสูงสุด n ตัวอักษรต้องการเปรียบเทียบแค่ส่วนหนึ่ง เช่น prefix

หมายเหตุ

  • ต้อง include <string.h>
  • เป็น case-sensitive
  • หาก n มากกว่าความยาว string จะเปรียบเทียบจนจบ string ที่สั้นกว่า