ความหมาย
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 ที่สั้นกว่า