Xin chào và chào mừng. Trong bài giảng này, tôi sẽ đưa ra
một minh chứng về giải pháp cho thách thức trước đây của chúng ta.
Tôi sẽ đi qua cách chúng ta có
thể đảo ngược các ký tự trong một chuỗi bằng cách sử
dụng hàm str length và cũng sắp xếp các chuỗi bằng cách sử
dụng str so sánh và cũng như sao chép str cũng như
sử dụng thuật toán bong bóng.
Hãy đưa ra các khối mã.
Và tôi sẽ chỉ tạo một chương trình duy nhất mà tôi nghĩ cho việc này. Tôi đã đề cập trong thử
thách rằng bạn tạo ra hai chương trình.
Nhưng để đơn giản và dễ trình diễn, tôi sẽ chỉ tạo một cái duy nhất.
Tạo một dự
án, tôi sẽ đặt tên cho nó là
các hàm chuỗi hoặc một số biến thể của nó.
Hãy gọi nó là ví dụ về các hàm
chuỗi phổ biến.
Vì vậy, hãy bắt đầu với điều ngược lại. Ngược lại có thể đi vào chức năng riêng của nó hoặc
chúng ta có thể chỉ cần đưa nó vào chính. Tôi sẽ đưa nó vào chính.
Vì vậy, điều đầu tiên tôi muốn làm là tôi sẽ tạo một - tốt, điều đầu tiên tôi
thực sự muốn làm là tôi muốn bao gồm tệp tiêu đề chính xác để tôi có thể sử dụng các
hàm chuỗi này, đó là chuỗi bao gồm của tôi. h.
Đây là nơi chứa tất cả các hàm chuỗi đẹp.
Bây giờ tôi sẽ tạo một mảng ký tự. Tôi sẽ làm cho nó có kích thước 100.
Nó chỉ là tùy ý,
chỉ là sẽ không thể lưu trữ những thứ lớn hơn 100.
Tôi sẽ tạo một vài biến cục bộ sẽ
giúp tôi phân tích cú pháp. Và những gì tôi muốn làm là tôi muốn
hiển thị một số đầu ra trước tiên cho người dùng.
Vì vậy, tôi sẽ chỉ nói một vài nguồn
cấp dữ liệu dòng, in các
ký tự riêng lẻ, riêng lẻ của chuỗi và thứ tự ngược lại.
Điều đó sẽ cho người dùng biết điều gì đang xảy ra và sau đó cũng in
ra chỉ để làm cho nó rõ ràng hơn, chỉ
cần in ra một cái gì đó như vậy, để dễ đọc hơn.
Tôi sẽ nói nhập chuỗi. Tôi sẽ đọc trong chuỗi.
Và sau đó tôi sẽ lưu trữ chuỗi.
Vì vậy, tôi
sẽ nói scanf, present s và tôi sẽ nói str.
Và tôi không cần phải vượt qua ký hiệu và để đọc nó.
Sau đó, tôi sẽ lấy độ dài chuỗi. Tôi sẽ đặt nó vào biến cục bộ l của tôi.
Vì vậy, tôi có thể gọi liên kết str bằng cách chỉ nói chiều dài str truyền trong
chuỗi và nó trả về bao nhiêu ký tự trong chuỗi đó. Rất, rất dễ dàng.
Và sau đó tôi sẽ in ra một cái gì đó để nói với họ rằng các ký tự theo thứ tự ngược lại.
Vì vậy, các ký tự của chuỗi trong dấu gạch
chéo ngược r dấu gạch chéo ngược n.
Sau đó, tôi sẽ viết một vòng lặp for nhỏ đi qua
mảng của tôi và theo độ dài và chỉ cần đảo ngược nó.
Vì vậy, tôi sẽ nói cho tôi bằng l.
Vì vậy, tôi sẽ quay ngược lại trong mảng
chuỗi thực tế. Tôi sẽ bắt đầu ở phần cuối và đi tiếp.
Và nói rằng tôi lớn hơn hoặc bằng
0 và tôi trừ đi. Và bạn lưu ý rằng tôi không phải nhìn vào
bất kỳ ký tự kết thúc rỗng nào khi tôi làm theo cách này.
Sau đó, tôi sẽ in ra từng ký tự khi tôi gặp nó.
Để in ra một ký tự và xem bạn chỉ cần thực hiện phần trăm c.
Và chỉ cần làm điều đó và nói str sub-I.
Và về cơ bản đó là nó.
Và sau đó tôi sẽ chỉ in ra một dòng mới.
Và thực sự tôi sẽ in ra một đống thứ chỉ để kết thúc nó, một
đống dấu gạch ngang.
Hãy xem điều đó có hiệu quả không, điều này thực sự dễ
dàng như bình thường, để có được độ dài không khó.
Và tôi đã quên một nguồn cấp dữ liệu dòng, vì vậy hãy khắc phục điều đó.
Vì vậy, ở đây nó nói in các ký tự riêng lẻ của chuỗi ngược lại hoặc nhập chuỗi.
Bây giờ scanf, nó sẽ chỉ để đọc. Vì vậy, nếu tôi nhập không gian Jason Feden.
Scanf sẽ chỉ đọc đến Jason và không gian.
Bạn muốn sử dụng một hàm khác như f get s nếu bạn muốn đọc toàn bộ nội dung.
Vì vậy, những gì điều này sẽ làm là nó sẽ đảo ngược Jason in
ra nosaj, nó sẽ làm được. Các ký tự của chuỗi đảo ngược là nosaj.
Điều đó khá đơn giản, không phải là một chức năng hoặc cách thực
hiện quá phức tạp.
Bây giờ chúng ta hãy thử nó với việc sắp xếp một chuỗi.
Và vì vậy bây giờ tôi sẽ làm một cái gì đó. Và tôi sẽ làm điều đó trong phần chính mà tôi đoán là bây giờ.
Tôi nên đưa chúng vào các hàm thực tế, nhưng chúng tôi không trình diễn
các hàm trong bài giảng này, chúng tôi đang trình diễn các chuỗi.
Vì vậy, hãy tạo thêm một vài biến cục bộ mà chúng ta sẽ cần.
Về cơ bản, chúng tôi sẽ tạo ra một cái tên.
Và trong trường hợp này,
tôi sẽ tạo một mảng chuỗi. Chúng ta sẽ tạo một mảng các chuỗi và chúng ta sẽ sử dụng f get s.
Tôi sẽ tạo một mảng chuỗi. Vì vậy, điều này trông giống
như một mảng hai chiều.
Vì vậy, những gì chúng tôi đang làm ở đây là chúng tôi đang tạo 25 chuỗi có kích thước 50.
Sau đó, tôi cũng sẽ tạo một cái khác chỉ 25, cái này
sẽ chứa mỗi chuỗi.
Và sau đó tôi sẽ
thêm hai biến nữa. Tôi sẽ thêm một n và một j.
Và vì vậy sau khi chúng tôi làm ngược lại, tôi sẽ in ra.
Một thông báo khác để nói
những gì chúng ta đang làm sắp xếp
các chuỗi của một mảng bằng cách sử dụng sắp xếp bong bóng.
Tôi sẽ không giải thích loại bong bóng cho bạn. Bởi vì một lần nữa, đó chỉ là một thuật toán không liên
quan đến những gì chúng tôi đang làm. Thực sự, đó chỉ là một cách để sắp xếp.
Đó thực sự là một trong những cách dễ nhất vì bạn chỉ cần hoán đổi về cơ bản.
Nhưng những gì chúng tôi muốn làm là trước tiên chúng tôi muốn lấy bao nhiêu chuỗi họ sẽ nhập. Vì vậy, chúng ta sẽ nói
số chuỗi đầu vào
printf, và sau đó chúng ta sẽ nói scanf.
Scanf có thể được sử dụng ở đây vì nó chỉ là một con số.
Chúng ta sẽ nói phần trăm d, và chúng ta sẽ lưu trữ nó trong biến cục bộ n.
Một lần nữa, tôi biết tôi không sử dụng những cái tên tuyệt
vời ở đây, nhưng tôi đang thể hiện điều gì đó. Vì nó là một nó, chúng tôi phải vượt qua trong ký hiệu và.
Sau đó, tôi sẽ yêu cầu họ nhập các chuỗi.
Vì vậy, ở đây
tôi sẽ nói chuỗi đầu vào
1 2 hoặc 3 theo sau là một nguồn cấp dữ liệu dòng.
Đây sẽ chỉ là số họ phải nhập.
Chuỗi một, chuỗi hai hoặc chuỗi ba.
Sau đó, tôi sẽ thực sự có một vòng lặp đi qua và nhận đầu vào.
Vì vậy, ở đây tôi sẽ nói với I
bằng 0, I nhỏ hơn n cho bao nhiêu chuỗi họ muốn
nhập và tôi cộng với cộng hoặc cộng với I.
Ở đây tôi sẽ thực sự đọc chuỗi và tôi sẽ sử dụng một cách khác để đọc -
tôi đã nghĩ đến việc sử dụng f get s, để bạn
có thể nhập vào một chuỗi có khoảng trắng. Nhưng tôi không nghĩ chúng tôi cần.
Chúng tôi quét f
và chúng tôi sẽ đọc thành scanf trong mảng tên của
chúng tôi.
Hãy nhớ rằng, chúng ta có tên và đây là một chuỗi các chuỗi về cơ
bản gồm 25 ký tự.
50 ký tự 25 từ.
Vì vậy, số từ tối đa bạn có thể nhập là 25.
Vì vậy, chúng tôi sẽ lưu trữ điều
này trong mảng tên của chúng tôi. Vì vậy, chúng tôi sẽ chỉ nói scanf.
Chúng ta sẽ đọc trong một chuỗi, và chúng ta sẽ đặt nó
trong tên phụ I.
Và vì vậy chúng tôi đã lưu trữ các mảng của mình, chúng tôi chỉ có thể lưu trữ tối đa 25.
Bây giờ chúng ta đã hoàn thành vòng lặp của mình và bây giờ chúng ta có thể viết loại bong bóng của mình.
Và vì vậy loại bong bóng của chúng tôi, tôi sẽ không giải thích cho bạn, tôi chỉ nói với bạn rằng đó
là một thuật toán khá đơn giản có một vòng lặp bên trong.
Vì vậy, bạn có một vòng lặp for đi qua, I bằng 1 qua
tất cả các chuỗi.
Và sau đó trong vòng lặp bên trong của bạn, bạn đi từ 0 đến tất
cả các chuỗi trừ đi một. Và bạn so sánh chuỗi đầu tiên đó với tất cả các chuỗi khác.
Và về cơ bản bạn làm bong bóng chúng xuống. Nhưng điều quan trọng
ở đây là hàm so sánh str.
Hãy để tôi cố gắng lấy thụt lề này một cách
chính xác trong các hàm sao chép str, đây thực sự là điều quan trọng.
Bạn sẽ nhận thấy rằng tôi không có bất kỳ dấu ngoặc kết thúc nào cho cả bốn vì
chúng có các câu lệnh đơn.
Mặc dù điều này if có một cái gì đó trong phần thân if của nó, đây chỉ là một câu lệnh.
Vì vậy, chúng ta sẽ so sánh từng từ với mọi từ khác về cơ bản sau
khi chúng ta đã so sánh một từ trước đó.
Vì vậy, sau đó chúng ta nói nếu str so sánh tên sub
j và tên sub j sub một, vì vậy
str so sánh có hai đối số, hai
mảng ký tự, con trỏ ký
tự thực sự.
Và nếu chúng bằng nhau, nó sẽ trả về 0.
Nếu tham số đầu tiên nhỏ hơn
tham số thứ hai, nó sẽ trả
về nhỏ hơn 0.
Và nếu tham số đầu tiên lớn hơn tham số thứ
hai, nó sẽ trả về lớn hơn 0, một.
Vì vậy, điều này đang nói là nếu chuỗi đầu tiên lớn hơn chuỗi thứ hai, thì chúng
ta muốn hoán đổi mọi thứ. Và đó là lý do tại sao chúng tôi có nhiệt độ đó.
Temp thực sự là lưu trữ một chuỗi tạm thời tạm thời.
Vì vậy, chúng tôi đặt tên tạm thời là phụ j và
sau đó chúng tôi hoán đổi tên phụ j với tên của j cộng với một.
Đó là cách hoạt động của phân loại bong bóng. Một lần nữa, điều quan trọng ở đây là str so sánh và str copy.
Và nếu bạn đang an toàn, bạn sẽ muốn sử dụng strn so sánh.
Và khi bạn so sánh strn. Thực ra thì strn so sánh,
bạn không cần quan tâm vì đó chỉ là khi bạn muốn so sánh tiền tố.
Đối với bản sao str, bạn thực sự muốn sử dụng bản sao strn.
Và thông số thứ ba là điều quan trọng.
Vì vậy, sao chép strn, bạn chỉ muốn đảm bảo rằng bạn không sao chép
quá kích thước của tạm thời, trừ đi một vì nếu không bạn sẽ bị tràn bộ đệm.
Vì vậy, bạn sẽ sử dụng tất cả những thứ này, bạn cũng có thể sử
dụng - nếu nó không phải là bộ đệm ký tự, bạn có thể muốn sử dụng
chiều dài str nếu nó là một con trỏ. Nhưng kích thước của sẽ hoạt động tốt cho điều này.
Và một lần nữa, điều này sẽ loại bỏ bất kỳ ghi đè bộ đệm nào.
Vì vậy, luôn an toàn hơn khi sử dụng bản sao strn và
một bản sao vì chúng ta có trình kết thúc null cần phải đi ở cuối.
Vì vậy, ở đây nó chỉ đích nguồn cho bản sao strn.
Chúng tôi đang sao chép tên phụ j vào tạm thời và giống với tên của j
cộng với một và tên phụ j. Và cuối cùng, tạm thời thành các tên
phụ j cộng một. Và tôi thực sự
phải cập nhật các biến này vì chúng
sai vì chúng luôn phải là nguồn. Nên đặt tên ở đây tên sub j.
Và sau đó cái cuối cùng sẽ
là tên của j cộng một, j cộng một.
Vì vậy, đó là sao chép strn và so sánh str, các hàm rất dễ sử dụng.
Sau khi chúng tôi đã sắp xếp chúng, chúng tôi chỉ muốn in chúng ra.
Vì vậy, chúng tôi muốn nói rằng các chuỗi xuất hiện sau khi sắp
xếp, hãy đưa nó vào
nguồn cấp dữ liệu dòng và sau đó đi qua
một vòng lặp
để in ra tất cả các chuỗi trong mảng của chúng tôi.
Vì vậy, chúng ta nói 4 I bằng 0.
I nhỏ hơn hoặc bằng n vì n đại diện cho số
lượng chuỗi mà chúng tôi đã sắp xếp và nhập vào.
Sau đó, chúng tôi chỉ muốn xem qua chuỗi các mảng chuỗi của chúng tôi.
Vì vậy, chúng tôi muốn nói nguồn cấp dữ liệu
dòng printf s và đặt tên phụ I.
Vì vậy, tên sub I thực sự là mảng được sắp xếp của chúng tôi, đó là lý do tại
sao chúng tôi có tên sub I.
Mặc dù chúng tôi không có cái thứ hai vì nó đại diện cho kích thước của mỗi ký tự.
25 từ trong tổng số tối đa 50 từ.
Vì vậy, hãy xem nếu điều này hoạt động.
Xây dựng nó, nhận được một vài tin nhắn bởi vì tôi không biết làm thế nào để đánh vần.
Và nếu chúng ta chạy điều này. Trước tiên, chúng tôi sẽ chạy chức năng đảo ngược của mình để bạn
có thể thấy lại điều đó vì chúng tôi đã đưa vào cùng một chương trình.
Nói Fedin và idf điều đó tốt.
Nhập số chuỗi mà chúng tôi muốn sắp xếp. Hãy nói năm, hãy
nói zzzz để rõ ràng, đại loại như
vậy.
Tôi đã nhầm lẫn một chút ở đó, nhưng có vẻ như nó đã sắp xếp nó, a b d f r z.
Vì vậy, nó hoạt động. Tôi có một lỗi
mặc dù vì đầu vào chuỗi phần trăm d.
Tôi nhập số chuỗi vào n và sau đó tôi nói nhỏ
hơn bằng, tôi chỉ nên nói nhỏ hơn.
Vì vậy, hãy chạy lại nó chỉ để chứng minh nó, nhưng tôi phải xây dựng nó.
Đừng quên xây dựng sau khi bạn đã thay đổi mọi thứ.
Một lần nữa, chúng tôi sẽ chỉ nói bất cứ điều gì ở đây và sau
đó đánh số các chuỗi. Hãy
chỉ làm bốn.
Vì vậy, sau đó họ sắp xếp theo thứ tự bảng chữ cái và nói d e l z, như vậy có vẻ tốt.
Vì vậy, bạn chắc chắn có thể cải thiện mã này khi bạn có thể muốn đưa mọi thứ
vào các chức năng, làm cho nó trở nên mô-đun hơn. Nhưng điều tôi đang cố gắng vượt qua với bài tập
này là cách bạn sử dụng str so sánh, cách bạn sử dụng bản sao strn và cách bạn
có thể sử dụng chiều dài str.
Bạn cũng nên chơi với con mèo str, con
mèo strn và đó là hàm phổ biến thực sự khác.
Bạn có thể muốn sử dụng strstr, strchar để tìm kiếm. Đó là thực sự, thực
sự tốt hoặc là, trên là, dưới để kiểm tra các ký tự,
hoặc các hàm chuyển đổi atoi nad atof.
Cảm ơn bạn. Tôi hy vọng nó sẽ có ích.