SO SÁNH CHUỖI TRONG C

  -  

Khi sử dụng ngôn ngữ lập trình C các bạn sẽ gặp các trường đúng theo so sánh. Có mã được thực hiện để so sánh nếu một vài nguyên nhỏ tuổi hơn, to hơn hoặc bằng với đầu vào khác. Cũng có một vài ba những so sánh được thực hiện như một cách thức bảo mật. Bạn có bao giờ hỏi: “Làm biện pháp nào mã vật dụng 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ừ”? Để có thể giúp các bạn trả lời câu hỏi này thì bây giờ sofaxuong.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 liêu về chuỗi c trong strcmp

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

*

Tổng quan tiền về chuỗi c vào hàm strcmp

Hàm strcmp vào string.h

Khi đối chiếu hai số trong ngữ điệu C thì các chúng ta có thể sử dụng một vài phép toán rất đơn giản và dễ dàng như là: , >=, , mặc dù để so sánh chuỗi chính xác thì các bạn không thể dùng các phép toán này mà cần đề nghị dùng hàm strcmp 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à mang lại ta một hiệu quả đó là:

1 nếu s1 to hơn s20 giả dụ s1 tương đương với s2-1 giả dụ s1 nhỏ dại hơn s2

Lưu ý rằng: vào Linux, hàm này đã thường trả về giá trị âm, dương hoặc bởi 0 (là khoảng cách giữa 2 ký kết tự khác biệt tương ứng trong s1 với 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 tác dụng là:


Enter s1: Hang Enter s2: Ho x = -1 => Hang Enter s1: Hong Enter s2: Hon x = 1 => Hong > HonEnter s1: Hung Enter s2: hung x = -1 => Hung Enter s1: quan Enter s2: quan lại x = 0 => quan liêu = 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 trong c strcmp được xem là phổ biến chuyển 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 hình 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á bán trị. Hàm trả về giá chỉ trị bằng 0 giả dụ hai chuỗi có mức giá trị bởi nhau, đã là một vài dương được trả về trường hợp s1 có giá trị lớn hơn s2 và hiệu quả trả về số âm ví như s1 có mức giá trị nhỏ tuổi hơn s2. Trong quá trình sử dụng hàm strcmp, các bạn phải cảnh giác để ý xem bạn nhập chuỗi 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ú đó có thể gây ra sự tiêu diệt trên mã của bạn.

Trong ngôi trường hợp bạn có nhu cầu so sánh các từ, thì có thể các bạn sẽ cảm thấy hơi bồn chồn và thiếu hiểu biết nhiều rằng trên sao họ lại phải áp dụng hàm so sánh những chuỗi. Trong những lúc sử dụng C, chúng ta nên lưu ý rằng một chuỗi là 1 trong những mảng những ký tự xong xuôi bằng cam kết tự null (). Nhờ vào định nghĩa này, những từ mà bọn họ quen gọi là chuỗi. Cụ thể dưới đây là một đoạn mã sẽ lý giải strcmp một cách dễ dàng nắm bắt hơn:

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

/ * công tác C mẫu mã minh họa việc thực hiện hàm strcmp * /#include #include void main ()char str1 <> = “Sắp xếp theo vật dụng 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ẽ có tác dụng gì, các bạn hãy xem những tệp tiêu đề. Title được bao gồm cùng cùng với . Điều này là vì hàm strcmp được dùng để làm định nghĩa trong tiêu đề . Nếu như tiêu đề này sẽ không được bao hàm trong mã, thì strcmp thuộc với tương đối nhiều hàm khác sẽ không còn hoạt động thông thường và sẽ xẩy ra lỗi trong quy trình biên dịch.

Đoạn mã trên sẽ so sánh hai chuỗi str1 với str2. Lúc 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 phía bên ngoài màn hình? Khi quá trình so sánh được thực hiện, chúng ta nên ao ước đợi hàm if-else in “Các chuỗi không bằng nhau” ra màn hình hiển thị vì “Bảng chữ cái” cùng này sẽ không bằng nhau một cách thiết yếu xác.

Trong mã, chúng ta cũng có thể thấy rằng “a” sẽ được khai báo là một số trong những nguyên. Điều này là do khi nhị chuỗi được đối chiếu với nhau thì hàm trả về một quý hiếm số. Bạn cũng có thể tự hỏi vì sao một quý hiếm số được trả về và quý hiếm của “a” đang là bao nhiêu? Đồng thời quý giá này sẽ bằng hiệu số ASCII của hai cam kết tự thứ nhất không khớp nhau. Trong mã của những ví dụ sinh sống trên, ký kết tự “i” với “s” là hai cam kết tự thứ nhất không khớp. Giá trị ASCII của i lúc này là 105 cùng s có mức giá trị là 115. Điều này sẽ với lại cho bạn sự khác hoàn toàn 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 mỗi chuỗi str1.

Xem thêm: Cách Tính Đường Trung Tuyến Trong Tam Giác Vuông Cân, Đều, Cách Tính Đường Trung Tuyến Trong Tam Giác Cân

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 cùng trả về quý giá 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 đang nhập không phù hợp với mật khẩu trong cơ sở tài liệu được mã sử dụng thì quyền truy cập vào website này sẽ ảnh hưởng từ chối. Đoạn mã dưới đây cho biết thêm cách strcmp có thể được áp dụng để xác minh mật khẩu:

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

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

Trong trường hợp các bạn chỉ muốn so sánh một vài ký kết tự được hướng đẫn giữa 2 chuỗi. Ví như là chỉ so sánh 3 ký tự thứ nhất trong mỗi chuỗi lúc đầu 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à một hàm tất cả sẵn trong header tệp tin string.h. Giúp bạn cũng có thể tìm hiệu mã ký tự ASSCII giữa 2 chuỗi vào C. Trải qua hiệu này, bạn cũng có thể so sánh 2 chuỗi vào C. Với tìm ra quan hệ giữa bọn chúng là bằng, phệ hay nhỏ.

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

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

Trên thực tế thì hàm strncmp() cũng sử dụng hiệu mã ký kết tự ASSCII thân hai chuỗi để đối chiếu chúng. Điểm biệt lập đó là thay vì so sánh trên toàn bộ 2 chuỗi ban đầu, thì họ chỉ triển khai so sánh trên một phạm vi được ra quyết định bởi đối số n khi áp dụng 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 ví dụ như này bởi chỉ định n=2 nên chúng ta chỉ đối chiếu 2 cam kết tự đầu nghỉ ngơi mỗi chuỗi là ab và ab nhưng mà thôi. Do đó tác dụng trả về là bằng nhau.

Xem thêm: Giải Bài 2 Sgk Hóa 8 Trang 33 Sgk Hóa Học 8, Giải Bài 2 Trang 33 Sgk Hóa 8

Tổng kết

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