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) |
| ใช้เมื่อ | ต้องการเปรียบเทียบสตริงทั้งหมด | ต้องการเปรียบเทียบบางส่วน |