Danh mục

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    
Thư viện của tui

Hỗ trợ phí lưu trữ khi tải xuống: miễn phí Tải xuống file đầy đủ (8 trang) 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 ( ...

Tài liệu được xem nhiều: