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

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

ความหมาย

strcmp() เปรียบเทียบ string สองตัวทุกตัวอักษรจนกว่าจะเจอความต่างหรือจบ string คืนค่าเป็น integer

Prototype

int strcmp(const char *str1, const char *str2);

คืนค่า

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

หลักการเปรียบเทียบ

เปรียบเทียบทีละตัวอักษรจากซ้ายไปขวา หาตัวที่ต่างกันแรก แล้วลบค่า ASCII (str1[i] - str2[i])

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

#include <stdio.h>
#include <string.h>
int main() {
    char a[50], b[50];
    int d;
    printf("ป้อน string 2 ตัว: ");
    scanf("%s %s", a, b);
    d = strcmp(a, b);
    if (d == 0)
        printf("'%s' เท่ากับ '%s'\\n", a, b);
    else if (d > 0)
        printf("'%s' มากกว่า '%s'\\n", a, b);
    else
        printf("'%s' น้อยกว่า '%s'\\n", a, b);
    return 0;
}

ผลลัพธ์

ป้อน string 2 ตัว: bhanu priya
'bhanu' น้อยกว่า 'priya'

คำอธิบาย: 'b' (98) < 'p' (112) ใน ASCII จึงคืนค่าติดลบ

ตัวอย่างโปรแกรมที่ 2: รับ input ด้วย fgets

#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';
    value = strcmp(string1, string2);
    if (value == 0)
        printf("'%s' เหมือน '%s'\\n", string1, string2);
    else if (value > 0)
        printf("'%s' มากกว่า '%s'\\n", string1, string2);
    else
        printf("'%s' น้อยกว่า '%s'\\n", string1, string2);
    return 0;
}

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

ป้อน String 1: Tutorials
ป้อน String 2: Point
'Tutorials' มากกว่า 'Point'

คำอธิบาย: 'T' (84) > 'P' (80) ใน ASCII

ตารางเปรียบเทียบฟังก์ชัน String

ฟังก์ชันวัตถุประสงค์คืนค่า
strcmpเปรียบเทียบ string ทั้งหมดint (0, +, -)
strncmpเปรียบเทียบ n ตัวแรกint (0, +, -)
strcasecmpเปรียบเทียบไม่สนใจ case (POSIX)int (0, +, -)
strcollเปรียบเทียบตาม localeint (0, +, -)

หมายเหตุ

  • ต้อง include <string.h>
  • ไม่ควรใช้ gets() ใช้ fgets() แทน
  • strcmp เหมาะสำหรับ sorting string