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


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

1 Tổng quan tiền về chuỗi c trong strcmp

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

*

Tổng quan lại về chuỗi c vào hàm strcmp

Hàm strcmp trong string.h

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

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

Một điểm nữa là hàm strcmp đối chiếu chuỗi s1 cùng chuỗi s2 và đến ta một công dụng đó là:

1 ví như s1 to hơn s20 nếu s1 tương tự với s2-1 nếu s1 bé dại hơn s2

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

Ví dụ đối chiếu chuỗi vào 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 hiệu quả 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 tiền = Quan

So sánh chuỗi trong c strcmp

*

So sánh chuỗi trong c strcmp

Hiện ni hàm đối chiếu chuỗi vào c strcmp được coi là phổ biến nhất. Cũng là vì định dạng dễ dàng và đơn giản của nó. Dưới đó là ví dụ một đoạn mã C được hiển thị format cơ bản như sau:

*

Hàm strcmp đối chiếu chuỗi của s1 cùng với chuỗi của s2 cùng trả về một giá trị. Hàm trả về giá trị bởi 0 giả dụ hai chuỗi có giá trị bằng nhau, sẽ là một số trong những dương được trả về trường hợp s1 có giá trị to hơn s2 và kết quả trả về số âm nếu s1 có giá trị nhỏ tuổi hơn s2. Trong quy trình sử dụng hàm strcmp, các bạn phải cẩn thận để ý xem bạn nhập chuỗi như thế nào vào trước. Nếu bạn không để ý thì bạn sẽ trả về một quý giá không ý muốn muốn, trường đoản cú đó rất 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ì gồm thể các bạn sẽ cảm thấy hơi hoảng loạn và không hiểu rằng trên sao chúng ta lại phải thực hiện hàm so sánh những chuỗi. Trong khi sử dụng C, chúng ta nên chú ý rằng một chuỗi là 1 mảng các ký tự chấm dứt bằng ký tự null (). Dựa vào định nghĩa này, những từ mà chúng ta quen gọi là chuỗi. Ví dụ dưới đây là một đoạn mã sẽ phân tích và lý giải strcmp một cách dễ hiểu hơn:

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

/ * công tác C chủng loại 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ắt đầu phân tích mã sẽ làm cho gì, bạn hãy xem những tệp tiêu đề. Tiêu đề được bao hàm cùng với . Điều này là do hàm strcmp được dùng làm định nghĩa trong title . Giả dụ tiêu đề này sẽ không được bao hàm trong mã, thì strcmp cùng với tương đối nhiều hàm khác sẽ không 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à str2. Khi mã này được biên dịch, câu hỏi đặt ra là tất cả những gì sẽ được in ra ngoài màn hình? Khi quá trình so sánh được thực hiện, bọn họ nên ước ao đợi hàm if-else in “Các chuỗi không bởi nhau” ra màn hình vì “Bảng chữ cái” với 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 số nguyên. Điều này là do khi hai chuỗi được so sánh với nhau thì hàm trả về một giá trị số. Bạn cũng có thể tự hỏi tại sao một quý giá số được trả về và giá trị của “a” sẽ là bao nhiêu? Đồng thời cực hiếm này sẽ bằng hiệu số ASCII của hai ký kết tự thứ nhất không khớp nhau. Trong mã của các ví dụ làm việc trên, ký kết tự “i” và “s” là hai cam kết tự thứ nhất không khớp. Giá trị ASCII của i từ bây giờ là 105 với s có giá trị là 115. Điều này sẽ sở hữu lại cho mình sự biệt lập là 10 tức là giá trị của chuỗi str2 thường sẽ có được giá trị lớn hơn giá trị của từng chuỗi str1.

Xem thêm: Chỉnh Khoảng Cách Co Giãn Dòng Trong Word 2010, 2013, 2016, Cách Giãn Dòng Và Giãn Đoạn Tự Động Trong Word

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

/ * công tác C mẫu mã minh họa việc sử 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 phù hợp lệ”);trả về 0;Đoạn mã trên đã được gán mật khẩu đăng nhập của người tiêu dùng là “cisgreat” với sử dụng tính năng scanf để lấy mật khẩu từ người tiêu dùng trước khi chất nhận được việc truy cập vào tài liệu nhạy bén cảm. Nếu như có bất kỳ tổ hợp ký tự làm sao khác ngoại trừ “cisgreat” được nhập có tác dụng mật khẩu, hàm if-else đã in “Mật khẩu không 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 biến thành không được thực hiện 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 ko được trình biên dịch đánh giá bằng “cisgreat”. Thêm nữa là vì chưng mã ASCII của mỗi ký tự được đối chiếu với mã của ký kết tự ở và một vị trí trong chuỗi khác. Các cam kết tự “C” với “c” bao gồm mã ASCII tương ứng là 67 và 99, khác hoàn toàn nhau.

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

Trong ngôi trường hợp các bạn chỉ muốn so sánh một vài ký tự được hướng đẫn giữa 2 chuỗi. Ví như là chỉ so sánh 3 cam kết tự trước tiên trong mỗi chuỗi ban sơ chẳng hạn. Thì từ bây giờ chúng ta sẽ dùng đến hàm strncmp().

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

Các bạn sử dụng hàm strncmp() để đối chiếu 2 chuỗi trong C cùng với số cam kết tự hướng đẫn với cú pháp chũm thể: strncmp(str1, str2,n)

Trong đó str1 và str2 là 2 chuỗi cần phải 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 để so sánh.

Trên thực tiễn thì hàm strncmp() cũng sử dụng hiệu mã ký tự ASSCII giữa hai chuỗi để đối chiếu chúng. Điểm khác hoàn toàn đó là cố vì đối chiếu trên tổng thể 2 chuỗi ban đầu, thì họ chỉ tiến hành so sánh trên một phạm vi được quyết định bởi đối số n khi thực hiện hàm strcmp() nhưng 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ả kia 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 lấy ví dụ này vì chỉ định n=2 nên bọn họ chỉ so sánh 2 ký kết tự đầu nghỉ ngơi mỗi chuỗi là ab và ab nhưng thôi. Bởi đó kết quả trả về là bằng nhau.

Tổng kết

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