So sánh 2 xâu trong c++

Yêu cầu bài tập C này là so sánh xem hai chuỗi có đồng nhất [giống nhau] hay không. Để giải bài tập C này bạn cần sử dụng vòng lặp để duyệt qua tất cả các ký tự của hai chuỗi và kiểm tra từng ký tự tương ứng với chỉ mục có giống nhau không.

Chương trình C

Quảng cáo

Dưới đây là chương trình C để giải bài tập so sánh hai chuỗi trong C:

include

int main[] { char s1[] = "vietjack"; char s2[] = "viatjack"; int n = 0; unsigned short flag = 1; while [s1[n] != '\0'] {

  if[s1[n] != s2[n]] {
     flag = 0;
     break;
  }
  n++;
} if[flag == 1] {
  printf["Chuoi %s va chuoi %s la dong nhat!!!\n", s1, s2];
}else {
  printf["Chuoi %s va chuoi %s la khong dong nhat!!!\n", s1, s2];
} return 0; }

Biên dịch chương trình C trên sẽ cho kết quả:

Quảng cáo

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại //www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: //www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền //www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Khi so sánh 2 số trong C thì ta có một số phép toán làm rất đơn giản , >=, 0] printf[" => %s > %s", s1, s2]; if[x == 0]printf[" => %s = %s", s1, s2]; printf["\n\n"]; } while [ strcmp[s1, s2] != 0]; return 0; }

Kết quả:

Enter s1: Hang

Enter s2: Ho x = -1 => Hang < Ho

Enter s1: Hong Enter s2: Hon x = 1 => Hong > Hon

Enter s1: Hung Enter s2: hung x = -1 => Hung < hung

Enter s1: Quan Enter s2: Quan x = 0 => Quan = Quan

2. Nguyên tắc so sánh

Nguyên tắc so sánh 2 chuỗi đó là duyệt lần lượt 2 từng ký tự của 2 chuỗi. So sánh mã ACSII của 2 ký tự đó, mã ký tự nào lớn hơn tức là chuỗi lớn hơn và ngừng so sánh. Nếu một chuỗi nào hết ký tự để so sanh trước thì chuỗi đó bé hơn.

Bài viết này mình sẽ hướng dẫn các bạn sử dụng 3 hàm so sánh xâu thông dụng và cách tự xây dựng các hàm này cho riêng mình

NỘI DUNG :

  • Hàm strcmp[]
  • Hàm strncmp[]
  • Hàm strcmpi[]
  • Video tutorial

strcmp

1. Hàm strcmp[]

Hàm strcmp[]

Để so sánh 2 xâu trong C thì bạn không thể sử dụng các toán tử so sánh mà phải dùng hàm, quy tắc so sánh 2 xâu là xét theo thứ tự từ điển.

Thứ tự từ điển được quyết định bởi mã ASCII, mã ASCII nhỏ hơn sẽ có thứ tự từ điển nhỏ hơn, ví dụ kí tự 'A' thì có thứ tự từ điển nhỏ hơn kí tự 'B'

Khi so sánh 2 xâu theo thứ tự từ điển thì ta lần lượt so sánh 2 kí tự ở cùng vị trí của 2 xâu

Cú pháp :

int strcmp[char *s, char *t]

Tham số : s và t là 2 con trỏ hoặc 2 mảng char[]

Giá trị trả về :

  • < 0 nếu s nhỏ hơn t theo từ điển
  • 0 nếu s giống t
  • \> 0 nếu s lớn hơn t theo từ điển

Trong 1 số trình biên dịch thì khi s < t sẽ trả về -1 và khi s > t sẽ trả về 1.

Ví dụ giá trị trả về khi so sánh 2 xâu bằng hàm strcmp

xâu sxâu tstrcmp[s, t]28tech28tech abc-128tech 28aech zzzz128tech28tech028tech28techabcd-1

Ví dụ :

include "stdio.h"

include "string.h"

include "ctype.h"

int main[]{

char s[1000] = "28tech python";  
char t[1000] = "28tech java";  
char c[1000] = "28tech python";  
printf["%d\n", strcmp[s, t]];   
if[strcmp[s, c] == 0]{  
    printf["Hai xau ky tu giong nhau !\n"];  
}  
return 0;  
}

Output :

1 Hai xau ky tu giong nhau !

Xây dựng hàm strcmp[] :

Để xây dựng hàm này ta cần xét 2 kí tự ở cùng vị trí của 2 xâu, nếu gặp kí tự đầu tiên khác nhau thì dựa vào thứ tự từ điển của kí tự này để suy ra thứ tự từ điển của 2 xâu ban đầu

Nếu không có kí tự nào khác nhau ta so sánh tới chiều dài, nếu chiều dài cũng giống nhau thì 2 xâu bằng nhau theo thứ tự từ điển

Chủ Đề