So sánh 2 chuỗi trong c

     

Khi sử dụng ngôn ngữ lập trình C các bạn sẽ gặp nhiều trường hợp so sánh. Có mã được sử dụng để so sánh nếu một vài nguyên nhỏ hơn, lớn hơn hoặc bởi với nguồn vào khác. Cũng có thể có một vài ba những so sánh được áp dụng như một phương thức bảo mật. Chúng ta có khi nào hỏi: “Làm bí quyết nào mã thứ tính rất có thể cung cấp bảo mật thông tin chỉ bằng cách so sánh các từ”? Để rất có thể giúp các bạn trả lời thắc mắc này thì hôm nay bdkhtravinh.vn.edu đang so sánh chuỗi trong c strcmp giúp bạn ngay nhé!


Mục lục bài xích viết

1 Tổng quan liêu về chuỗi c trong strcmp

Tổng quan về chuỗi c vào strcmp

*

Tổng quan liêu về chuỗi c vào hàm strcmp

Hàm strcmp vào string.h

Khi đối chiếu hai số trong ngôn từ C thì các bạn cũng có thể sử dụng một vài ba phép toán rất đơn giản dễ dàng như là: , >=, , mặc dù để so sánh chuỗi đúng chuẩn thì các bạn không thể dùng các phép toán này mà cần nên dùng hàm strcmp nằm trong thư viện của string.h.

Bạn đang xem: So sánh 2 chuỗi trong c

Một điểm nữa là hàm strcmp so sánh chuỗi s1 với chuỗi s2 và mang đến ta một tác dụng đó là:

1 nếu s1 lớn hơn s20 nếu như s1 giống như với s2-1 ví như s1 nhỏ tuổi hơn s2

Lưu ý rằng: trong Linux, hàm này vẫn thường trả về cực hiếm âm, dương hoặc bằng 0 (là khoảng cách giữa 2 ký tự không giống nhau tương ứng trong s1 với s2).

Ví dụ so sánh chuỗi trong c strcmp


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include
#include
int main()

char s1<20>;
char s2<20>;
do

printf("Enter s1: ");
gets(s1);
printf("Enter s2: ");
gets(s2);
int x = strcmp(s1, s2);
printf("x = %d", x);
if(x printf(" => %s , s1, s2);
if(x > 0) printf(" => %s > %s", s1, s2);
if(x == 0)printf(" => %s = %s", s1, s2);
printf(" ");
while ( strcmp(s1, s2) != 0);
return 0;

Cho ra tác dụng là:


Enter s1: HangEnter s2: Hox = -1 => Hang Enter s1: HongEnter s2: Honx = 1 => Hong > HonEnter s1: HungEnter s2: hungx = -1 => Hung Enter s1: QuanEnter s2: Quanx = 0 => quan = Quan

So sánh chuỗi vào c strcmp

*

So sánh chuỗi trong c strcmp

Hiện nay hàm so sánh chuỗi vào c strcmp được coi là phổ vươn lên là nhất. Cũng là vị định dạng đơn giản của nó. Dưới đấy là ví dụ một quãng mã C được hiển thị định dạng cơ bản như sau:

*

Hàm strcmp so sánh chuỗi của s1 với chuỗi của s2 và trả về một giá chỉ trị. Hàm trả về giá bán trị bởi 0 giả dụ hai chuỗi có giá trị bằng nhau, vẫn là một số trong những dương được trả về giả dụ s1 có giá trị to hơn s2 và hiệu quả trả về số âm nếu s1 có giá trị nhỏ dại hơn s2. Trong quá trình sử dụng hàm strcmp, chúng ta phải cảnh giác để ý xem chúng ta nhập chuỗi nào vào trước. Nếu như bạn không chăm chú thì bạn sẽ trả về một cực hiếm không mong muốn, trường đoản cú đó hoàn toàn có thể gây ra sự tiêu diệt trên mã của bạn.

Trong trường hợp bạn muốn so sánh những từ, thì có thể các bạn sẽ cảm thấy hơi bồn chồn và không hiểu biết nhiều rằng trên sao bọn họ lại phải sử dụng hàm so sánh những chuỗi. Trong khi sử dụng C, chúng ta nên xem xét rằng một chuỗi là 1 trong mảng những ký tự hoàn thành bằng ký tự null (). Phụ thuộc vào định nghĩa này, những từ mà họ quen điện thoại tư vấn là chuỗi. Ví dụ dưới đây là một đoạn mã sẽ lý giải strcmp một cách dễ nắm bắt hơn:

char str1 <> = “con hổ”;char str2 <> = “con hổ”;a = strcmp (str1, str2);Ở lấy một ví dụ trên bạn nghĩ rằng cực hiếm của “a” đang là bao nhiêu? Nếu chúng ta đoán là a = 0 thì các bạn đã chính xác. Cả nhì dây trên đầy đủ được đặt thành “tiger” đều bằng nhau nên bọn chúng sẽ bằng nhau. Hiện nay chúng ta sẽ để ý một vài tình huống thực tế hơn nhưng mà hàm này được thực hiện đó là:

/ * công tác C mẫu minh họa việc áp dụng hàm strcmp * /#include #include void main ()char str1 <> = “Sắp xếp theo thiết bị tự chữ cái”;char str2 <> = “Bảng chữ cái”;int a;a = strcmp (str2, str1);if (a == 0)printf (“Các chuỗi bằng nhau”);khácprintf (“Các chuỗi không bằng nhau”);trả về 0;Trước khi bước đầu phân tích mã sẽ làm gì, các bạn hãy xem những tệp tiêu đề. Tiêu đề được bao gồm cùng với . Điều này là do hàm strcmp được dùng để làm định nghĩa trong tiêu đề . Nếu như tiêu đề này không được bao hàm trong mã, thì strcmp thuộc với không hề ít hàm khác sẽ không còn hoạt động thông thường và sẽ xảy ra lỗi trong quá trình biên dịch.

Đoạn mã trên sẽ đối chiếu hai chuỗi str1 với str2. Khi mã này được biên dịch, câu hỏi đặt ra là các thứ sẽ được in ra ngoài màn hình? Khi quy trình so sánh được thực hiện, họ nên hy vọng đợi hàm if-else in “Các chuỗi không bằng nhau” ra screen vì “Bảng chữ cái” cùng này sẽ không bằng nhau một cách chính xác.

Trong mã, bạn có thể thấy rằng “a” sẽ được khai báo là một trong những nguyên. Điều này là do khi nhì chuỗi được so sánh với nhau thì hàm trả về một giá trị số. Chúng ta có thể tự hỏi lý do một quý hiếm số được trả về và cực hiếm của “a” đã là bao nhiêu? Đồng thời cực hiếm này sẽ bởi hiệu số ASCII của hai ký kết tự thứ nhất không khớp nhau. Vào mã của những ví dụ sinh sống trên, ký kết tự “i” và “s” là hai ký tự trước tiên không khớp. Giá trị ASCII của i hôm nay là 105 và s có giá trị là 115. Điều này sẽ sở hữu lại cho mình sự khác hoàn toàn là 10 có nghĩa là giá trị của chuỗi str2 thường sẽ có giá trị lớn hơn giá trị của mỗi chuỗi str1.

Xem thêm: Điểm Mua Bảo Hiểm Xe Máy Ở Đâu Hà Nội Mới Nhất, Các Điểm Bán Bảo Hiểm Xe Máy Ở Hà Nội

Thực tế strcmp sẽ hữu ích cho việc đối chiếu mật khẩu. đối chiếu chuỗi vào c strcmp với trả về giá trị 0 giả dụ cả nhị chuỗi chính xác bằng nhau. Điều này rất có ích vì giả dụ mật khẩu đã nhập không khớp với password trong cơ sở tài liệu được mã thực hiện thì quyền truy cập vào trang web này có khả năng sẽ bị từ chối. Đoạn mã dưới đây cho biết thêm cách strcmp hoàn toàn có thể được thực hiện để xác minh mật khẩu:

/ * lịch trình C mẫu mã minh họa việc áp dụng hàm strcmp * /#include #include void main ()char userpassword <> = cisgreat;char userpasswordEntered <>;int a;printf (“Vui lòng nhập mật khẩu đăng nhập của bạn:“);scanf (userpasswordEntered);a = strcmp (userpassword, userpasswordEntered);if (a == 0)printf (“Mật khẩu đã được xác minh”);khácprintf (“Mật khẩu không hợp lệ”);trả về 0;Đoạn mã trên đã có được gán mật khẩu của người tiêu dùng là “cisgreat” cùng sử dụng tác dụng scanf để mang mật khẩu từ người dùng trước khi được cho phép việc truy vấn vào tài liệu tinh tế cảm. Nếu có bất kỳ tổ hợp ký kết tự làm sao khác ngoài “cisgreat” được nhập có tác dụng mật khẩu, hàm if-else đang in “Mật khẩu chưa phù hợp lệ” ra ngoài màn hình. Ngay cả khi chuỗi “CISGREAT” được nhập thì câu lệnh if cũng trở nên không được triển khai thành công. Điều này là do thực tế tuy nhiên các vần âm giống nhau được sử dụng, thì chuỗi “CISGREAT” cũng không được trình biên dịch review bằng “cisgreat”. Thêm nữa là vị mã ASCII của mỗi ký kết tự được so sánh với mã của ký kết tự ở cùng một vị trí vào chuỗi khác. Các ký kết tự “C” với “c” tất cả mã ASCII tương xứng là 67 cùng 99, khác hoàn toàn nhau.

So sánh chuỗi trong c strcmp cùng với số ký kết tự chỉ định

Trong ngôi trường hợp chúng ta chỉ muốn đối chiếu một vài ký tự được hướng đẫn giữa 2 chuỗi. Ví như là chỉ so sánh 3 ký kết tự thứ nhất trong từng chuỗi ban sơ chẳng hạn. Thì hôm nay chúng ta sẽ sử dụng đến hàm strncmp().

Hàm strncmp() trong C là một trong hàm có sẵn vào header file string.h. Giúp chúng ta cũng có thể tìm hiệu mã cam kết tự ASSCII giữa 2 chuỗi trong C. Trải qua hiệu này, bạn có thể so sánh 2 chuỗi trong C. Và tìm ra mối quan hệ giữa chúng là bằng, to hay nhỏ.

Các bạn thực hiện hàm strncmp() để đối chiếu 2 chuỗi vào C cùng với số ký kết tự hướng dẫn và chỉ định với cú pháp cầm cố thể: strncmp(str1, str2,n)

Trong đó str1 và str2 là 2 chuỗi cần được so sánh, và n đó là phạm vi số cam kết tự tối đa được tính từ trên đầu hai chuỗi dùng để làm so sánh.

Trên thực tiễn thì hàm strncmp() cũng sử dụng hiệu mã cam kết tự ASSCII giữa hai chuỗi để đối chiếu chúng. Điểm biệt lập đó là cố vì so sánh trên toàn thể 2 chuỗi ban đầu, thì bọn họ chỉ tiến hành so sánh bên trên một phạm vi được quyết định bởi đối số n khi sử dụng hàm strcmp() cơ mà thôi. 

#include#include#includeint main(void) char s1<10> = "abA"; char s2<10> = "aba"; int n = 2; printf("Ma ascii cua a:%d ", "a");//Ma ascii cua a:97 printf("Ma ascii cua A:%d ", "A");//Ma ascii cua A:65 printf("Ma ascii cua b:%d ", "b");//Ma ascii cua b:98 printf("Hieu ma ascii: %d ",strncmp(s1,s2,n));//hiệu ma ascii: 0 if(strncmp(s1,s2,2)==0) printf("%d ky tu dau cua 2 chuoi bang nhau", n); else if(strncmp(s1,s2,2)>0) printf("%d ky tu dau cua %s lon hon %s", n, s1, s2); else printf("%d ky tu dau cua %s nho hon %s", n, s1, s2); return 0;

Kết quả đó là:

Ma ascii cua a:97Ma ascii cua A:65Ma ascii cua b:98Hieu ma ascii: 02 ky tu dau cua 2 chuoi bang nhau

Với ví dụ như này vị chỉ định n=2 nên bọn họ chỉ so sánh 2 cam kết tự đầu làm việc mỗi chuỗi là ab và ab mà lại thôi. Do đó tác dụng trả về là bởi nhau.

Tổng kết

So sánh chuỗi vào c strcmp là giữa những thao tác quen thuộc thuộc. Và đặc biệt strcmp là giữa những hàm đối chiếu được sử dụng nhiều tốt nhất trong ngữ điệu C. Nó được thực hiện để kiểm tra sự đồng đẳng của nhì từ hoặc chuỗi dễ dàng như là “mèo” và “chó”. Nó cũng hoàn toàn có thể được dùng như một phần của quy trình mã hóa mật khẩu.

qqlive| j88