Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 7
Số trang: 8
Loại file: pdf
Dung lượng: 147.54 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
C đã được tạo ra với một mục tiêu là làm cho nó thuận tiện để viết các chương trình lớn với số lỗi ít hơn trong mẫu hình lập trình thủ tục mà lại không đặt gánh nặng lên vai người viết ra trình dịch C
Nội dung trích xuất từ tài liệu:
Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 7Updatesofts.com Ebooks TeamXâu kí tTrong t t c các chương trình chúng ta ñã th y cho ñ n gi , chúng ta ch s d ng các bi nki u s , ch dùng ñ bi u di n các s . Nhưng bên c nh các bi n ki u s còn có các xâu kít , chúng cho phép chúng ta bi u di n các chu i kí t như là các t , câu, ño n văn b n...Cho ñ n gi chúng ta m i ch dùng chúng dư i d ng h ng ch ch a quan tâm ñ n cácbi n có th ch a chúng.Trong C++ không có ki u d li u cơ b n ñ lưu các xâu kí t . ð có th th a mãn nhuc u này, ngư i ta s d ng m ng có ki u char. Hãy nh r ng ki u d li u này (char) chcó th lưu tr m t kí t ñơn, b i v y nó ñư c dùng ñ t o ra xâu c a các kí t ñơn.Ví d , m ng sau (hay là xâu kí t ):char jenny [20];có th lưu m t xâu kí t v i ñ dài c c ñ i là 20 kí t . B n có th tư ng tư ng nó nhưsau:Kích thư c c c ñ i này không c n ph i luôn luôn dùng ñ n. Ví d , jenny có th lưu xâu Vì các m ng kí t có th lưu các xâu kí t ng n hơnHello hay Merry christmas.ñ dài c a nó, trong C++ ñã có m t quy ư c ñ k t thúc m t n i dung c a m t xâu kí tb ng m t kí t null, có th ñư c vi t là \0.Chúng ta có th bi u di n jenny (m t m ng có 20 ph n t ki u char) khi lưu tr xâu kít Hello và Merry Christmas theo cách sau:Chú ý r ng sau n i dung c a xâu, m t kí t null (\0) ñư c dùng ñ báo hi u k t thúcxâu. Nh ng ô màu xám bi u di n nh ng giá tr không xác ñ nh.Kh i t o các xâu kí t .Vì nh ng xâu kí t là nh ng m ng bình thư ng nên chúng cũng như các m ng khác. Víd , n u chúng ta mu n kh i t o m t xâu kí t v i nh ng giá tr xác ñ nh chúng ta có thlàm ñi u ñó tương t như v i các m ng khác: Trang 48Updatesofts.com Ebooks Teamchar mystring[] = { H, e, l, l, o, \0 };Tuy nhiên, chúng ta có th kh i t o giá tr cho m t xâu kí t b ng cách khác: s d ng cách ng xâu kí t .Trong các bi u th c chúng ta ñã s d ng trong các ví d trong các chương trư c các h ngxâu kí t ñ xu t hi n vài l n. Chúng ñư c bi u di n trong c p ngo c kép (), ví d :the result is: là m t h ng xâu kí t chúng ta s d ng m t s ch .Không gi ng như d u nháy ñơn () cho phép bi u di n h ng kí t , c p ngo c kép () làh ng bi u di n m t chu i kí t liên ti p, và cu i chu i m t kí t null (\0) luôn ñư ct ñ ng thêm vào.Vì v y chúng ta có th kh i t o xâu mystring theo m t trong hai cách sau ñây:char mystring [] = { H, e, l, l, o, \0 };char mystring [] = Hello;Trong c hai trư ng h p m ng (hay xâu kí t ) mystring ñư c khai báo v i kích thư c 6kí t : 5 kí t bi u di n Hello c ng v i m t kí t null.Trư c khi ti p t c, tôi c n ph i nh c nh b n r ng vi c gán nhi u h ng như vi c s d ngd u ngo c kép () ch h p l khi kh i t o m ng, t c là lúc khai báo m ng. Các bi u th ctrong chương trình như:mystring = Hello;mystring[] = Hello;là không h p l , c câu l nh dư i ñây cũng v y:mystring = { H, e, l, l, o, \0 };V y hãy nh : Chúng ta ch có th gán nhi u h ng cho m t m ng vào lúc kh i t o nó.Nguyên nhân là m t thao tác gán (=) không th nh n v trái là c m t m ng mà ch có thnh n m t trong nh ng ph n t c a nó. Vào th i ñi m kh i t o m ng là m t trư ng h pñ c bi t, vì nó không th c s là m t l nh gán m c dù nó s d ng d u b ng (=).Gán giá tr cho xâu kí tVì v trái c a m t l nh gán ch có th là m t ph n t c a m ng ch không th là c m ng,chúng ta có th gán m t xâu kí t cho m t m ng ki u char s d ng m t phương phápnhư sau:mystring[0] = H;mystring[1] = e; Trang 49Updatesofts.com Ebooks Teammystring[2] = l;mystring[3] = l;mystring[4] = o;mystring[5] = \0;Nhưng rõ ràng ñây không ph i là m t phương pháp th c t . ð gán giá tr cho m t xâu kít , chúng ta có th s d ng lo t hàm ki u strcpy (string copy), hàm này ñư c ñ nhnghĩa trong string.h và có th ñư c g i như sau:strcpy (string1, string2);L nh này copy n i dung c a string2 sang string1. string2 có th là m t m ng, contr hay m t h ng xâu kí t , b i v y l nh sau ñây là m t cách ñúng ñ gán xâu h ngHello cho mystring:strcpy (mystring, Hello);Ví d : J. Soulie// setting value to string#include #include int main (){ char szMyName [20]; strcpy (szMyName,J. Soulie); cout Updatesofts.com Ebooks Team{ char szMyName [20]; setstring (szMyName,J. Soulie); cout Updatesofts.com Ebooks Teamxâu kí t thay cho cin.getline. Ví d , trong chươn trình c a chúng ta, khi chúng tamu n nh n d li u t ngư i dùng chúng ta có th vi t:cin >> mybuffer;l nh này s làm vi c như nó có nh ng h n ch sau mà cin.getline không có: • Nó ch có th nh n nh ng t ñơn (không nh n ñư c c câu) vì phương th c này s d ng kí t tr ng(bao g m c d u cách, d u tab và d u xu ng dòng) làm d u hi u k t thúc.. • Nó không cho phép ch ñ nh kích thư c cho b ñ m. Chương trình c a b n có th ch y không n ñ nh n u d li u vào l n hơn kích c c a m ng ch a nó.Vì nh ng nguyên nhân trên, khi mu n nh p vào các xâu kí t b n nên s d ngcin.getline thay vì cin >>.Chuy n ñ i xâu kí t sang các ki u khác.Vì m t xâu kí t có th bi u di n nhi u ki u d li u khác như d ng s nên vi c chuy nñ i n i dung như v y sang d ng s là r t h u ích. Ví d , m t xâu có th mang giá tr1977nhưng ñó là m t chu i g m 5 kí t (k c kí t null) và không d gì chuy n thànhm t s nguyên. Vì v y thư vi n cstdlib (stdlib.h) ñã cung c p 3 macro/hàm h u íchsau: • atoi: chuy n xâu thành ki u int. • atol: chuy n xâu thành ki u long. • atof: chuy n xâu thành ki u float.T t c các hàm này nh n m t tham s và tr v giá tr s ( ...
Nội dung trích xuất từ tài liệu:
Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 7Updatesofts.com Ebooks TeamXâu kí tTrong t t c các chương trình chúng ta ñã th y cho ñ n gi , chúng ta ch s d ng các bi nki u s , ch dùng ñ bi u di n các s . Nhưng bên c nh các bi n ki u s còn có các xâu kít , chúng cho phép chúng ta bi u di n các chu i kí t như là các t , câu, ño n văn b n...Cho ñ n gi chúng ta m i ch dùng chúng dư i d ng h ng ch ch a quan tâm ñ n cácbi n có th ch a chúng.Trong C++ không có ki u d li u cơ b n ñ lưu các xâu kí t . ð có th th a mãn nhuc u này, ngư i ta s d ng m ng có ki u char. Hãy nh r ng ki u d li u này (char) chcó th lưu tr m t kí t ñơn, b i v y nó ñư c dùng ñ t o ra xâu c a các kí t ñơn.Ví d , m ng sau (hay là xâu kí t ):char jenny [20];có th lưu m t xâu kí t v i ñ dài c c ñ i là 20 kí t . B n có th tư ng tư ng nó nhưsau:Kích thư c c c ñ i này không c n ph i luôn luôn dùng ñ n. Ví d , jenny có th lưu xâu Vì các m ng kí t có th lưu các xâu kí t ng n hơnHello hay Merry christmas.ñ dài c a nó, trong C++ ñã có m t quy ư c ñ k t thúc m t n i dung c a m t xâu kí tb ng m t kí t null, có th ñư c vi t là \0.Chúng ta có th bi u di n jenny (m t m ng có 20 ph n t ki u char) khi lưu tr xâu kít Hello và Merry Christmas theo cách sau:Chú ý r ng sau n i dung c a xâu, m t kí t null (\0) ñư c dùng ñ báo hi u k t thúcxâu. Nh ng ô màu xám bi u di n nh ng giá tr không xác ñ nh.Kh i t o các xâu kí t .Vì nh ng xâu kí t là nh ng m ng bình thư ng nên chúng cũng như các m ng khác. Víd , n u chúng ta mu n kh i t o m t xâu kí t v i nh ng giá tr xác ñ nh chúng ta có thlàm ñi u ñó tương t như v i các m ng khác: Trang 48Updatesofts.com Ebooks Teamchar mystring[] = { H, e, l, l, o, \0 };Tuy nhiên, chúng ta có th kh i t o giá tr cho m t xâu kí t b ng cách khác: s d ng cách ng xâu kí t .Trong các bi u th c chúng ta ñã s d ng trong các ví d trong các chương trư c các h ngxâu kí t ñ xu t hi n vài l n. Chúng ñư c bi u di n trong c p ngo c kép (), ví d :the result is: là m t h ng xâu kí t chúng ta s d ng m t s ch .Không gi ng như d u nháy ñơn () cho phép bi u di n h ng kí t , c p ngo c kép () làh ng bi u di n m t chu i kí t liên ti p, và cu i chu i m t kí t null (\0) luôn ñư ct ñ ng thêm vào.Vì v y chúng ta có th kh i t o xâu mystring theo m t trong hai cách sau ñây:char mystring [] = { H, e, l, l, o, \0 };char mystring [] = Hello;Trong c hai trư ng h p m ng (hay xâu kí t ) mystring ñư c khai báo v i kích thư c 6kí t : 5 kí t bi u di n Hello c ng v i m t kí t null.Trư c khi ti p t c, tôi c n ph i nh c nh b n r ng vi c gán nhi u h ng như vi c s d ngd u ngo c kép () ch h p l khi kh i t o m ng, t c là lúc khai báo m ng. Các bi u th ctrong chương trình như:mystring = Hello;mystring[] = Hello;là không h p l , c câu l nh dư i ñây cũng v y:mystring = { H, e, l, l, o, \0 };V y hãy nh : Chúng ta ch có th gán nhi u h ng cho m t m ng vào lúc kh i t o nó.Nguyên nhân là m t thao tác gán (=) không th nh n v trái là c m t m ng mà ch có thnh n m t trong nh ng ph n t c a nó. Vào th i ñi m kh i t o m ng là m t trư ng h pñ c bi t, vì nó không th c s là m t l nh gán m c dù nó s d ng d u b ng (=).Gán giá tr cho xâu kí tVì v trái c a m t l nh gán ch có th là m t ph n t c a m ng ch không th là c m ng,chúng ta có th gán m t xâu kí t cho m t m ng ki u char s d ng m t phương phápnhư sau:mystring[0] = H;mystring[1] = e; Trang 49Updatesofts.com Ebooks Teammystring[2] = l;mystring[3] = l;mystring[4] = o;mystring[5] = \0;Nhưng rõ ràng ñây không ph i là m t phương pháp th c t . ð gán giá tr cho m t xâu kít , chúng ta có th s d ng lo t hàm ki u strcpy (string copy), hàm này ñư c ñ nhnghĩa trong string.h và có th ñư c g i như sau:strcpy (string1, string2);L nh này copy n i dung c a string2 sang string1. string2 có th là m t m ng, contr hay m t h ng xâu kí t , b i v y l nh sau ñây là m t cách ñúng ñ gán xâu h ngHello cho mystring:strcpy (mystring, Hello);Ví d : J. Soulie// setting value to string#include #include int main (){ char szMyName [20]; strcpy (szMyName,J. Soulie); cout Updatesofts.com Ebooks Team{ char szMyName [20]; setstring (szMyName,J. Soulie); cout Updatesofts.com Ebooks Teamxâu kí t thay cho cin.getline. Ví d , trong chươn trình c a chúng ta, khi chúng tamu n nh n d li u t ngư i dùng chúng ta có th vi t:cin >> mybuffer;l nh này s làm vi c như nó có nh ng h n ch sau mà cin.getline không có: • Nó ch có th nh n nh ng t ñơn (không nh n ñư c c câu) vì phương th c này s d ng kí t tr ng(bao g m c d u cách, d u tab và d u xu ng dòng) làm d u hi u k t thúc.. • Nó không cho phép ch ñ nh kích thư c cho b ñ m. Chương trình c a b n có th ch y không n ñ nh n u d li u vào l n hơn kích c c a m ng ch a nó.Vì nh ng nguyên nhân trên, khi mu n nh p vào các xâu kí t b n nên s d ngcin.getline thay vì cin >>.Chuy n ñ i xâu kí t sang các ki u khác.Vì m t xâu kí t có th bi u di n nhi u ki u d li u khác như d ng s nên vi c chuy nñ i n i dung như v y sang d ng s là r t h u ích. Ví d , m t xâu có th mang giá tr1977nhưng ñó là m t chu i g m 5 kí t (k c kí t null) và không d gì chuy n thànhm t s nguyên. Vì v y thư vi n cstdlib (stdlib.h) ñã cung c p 3 macro/hàm h u íchsau: • atoi: chuy n xâu thành ki u int. • atol: chuy n xâu thành ki u long. • atof: chuy n xâu thành ki u float.T t c các hàm này nh n m t tham s và tr v giá tr s ( ...
Tìm kiếm theo từ khóa liên quan:
Tài liệu lập trình ngôn ngữ lập trình ngôn ngữ C Ngôn ngữ lập trình mệnh lệnh Tiêu chuẩn ANSI tiêu chuẩn ISOTài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 277 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 268 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 267 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 226 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 218 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 209 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 186 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 170 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 169 0 0