Các nội dung cần ôn tập với C
Số trang: 44
Loại file: pdf
Dung lượng: 236.75 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Kiến thức lập trình C trong UNIX về cơ bản cũng giống như học lập trình trong Borland C 3.1 (còn gọi là phiên bản BC cho DOS) cho nên các bạn có thể tham khảo các cú pháp cũng như các hàm trong BC. Tuy nhiên chúng ta cũng cần nhấn mạnh 1 chút về các vấn đề sau...
Nội dung trích xuất từ tài liệu:
Các nội dung cần ôn tập với C Các nội dung cần ôn tập với CKiến thức chungKiến thức lập trình C trong UNIX về cơ bản cũng giống như học lập trình trong Borland C 3.1(còn gọi là phiên bản BC cho DOS) cho nên các bạn có thể tham khảo các cú pháp cũng như cáchàm trong BC.Tuy nhiên chúng ta cũng cần nhấn mạnh 1 chút về các vấn đề sau: • Program Arguments. int main(int argc, char *argv[]) . o Chú ý rằng argv[0] luôn có và chính là tên chương trình. o Để lấy các tham số và các đối số một cách đầy đủ thì cần dùng các hàm và biến môi trường như sau: #include int getopt(int argc, char *const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; • Environment Variables. Liệt kê hoặc thiết lập các biến môi trường thông qua các hàm và biến toàn cục như sau: extern char **environ; char *getenv(const char *name); int putenv(const char *string);Có 1 số bài tập như sau: 1. Giả sử có 1 chương trình cần chạy với 1 số options như -i, -l, -r, -f và sau -f sẽ có 1 argument. Khi đó chương trình chạy như sau: $ ./argopt -i -lr hi there -f fred.c -q option: i option: l option: r option: f filename: fred.c argopt: invalid option--q unknown option: q argument: hi there Hãy viết chương trình minh họa để ra kết quả như trên.#include #include int main(int argc, char *argv[]){ int opt; while((opt = getopt(argc, argv, if:lr)) != -1) { switch(opt) { case i: case l: case r: printf(option: %c , opt); break; 1/44 case f: printf(filename: %s , optarg); break; case :: printf(option needs a value ); break; case ?: printf(unknown option: %c , optopt); break; } } for(; optind < argc; optind++) printf(argument: %s , argv[optind]); return(0);} 2. Hãy viết chương trình làm việc với biến môi trường như sau: a. Liệt kê các biến môi trường của tiến trình hiện tại thông qua biến toàn cục environ.#include #include int main(){ char **env = environ; while(*env) { printf(%s ,*env); env++; }return(0);} b. Lấy thông tin của biến môi trường thông qua hàm getenv. Ví dụ như các biến PATH, HOME,…#include #include #include int main(int argc, char *argv[]){ char *var, *value; if(argc == 1 || argc > 3) { fprintf(stderr,usage: environ var [value] ); exit(1); } var = argv[1]; value = getenv(var); if(value) printf(Variable %s has value %s , var, value); else printf(Variable %s has no value , var); if(argc == 3) { char *string; value = argv[2]; 2/44 string = malloc(strlen(var)+strlen(value)+2); if(!string) { fprintf(stderr,out of memory ); exit(1); } strcpy(string,var); strcat(string,=); strcat(string,value); printf(Calling putenv with: %s ,string); if(putenv(string) != 0) { fprintf(stderr,putenv failed ); free(string); exit(1); } value = getenv(var); if(value) printf(New value of %s is %s , var, value); else printf(New value of %s is null?? , var); }return(0);}Làm việc với FileCó hai cơ chế làm việc với File. • Truy cập và thao tác với File thông qua các lời gọi hệ thống. File Descriptor chuẩn: STDIN_FILENO, STDOUT_FILENO, và STDERR_FILENO • Truy cập và thao tác với File thông qua các hàm chuẩn thư viện. con trỏ chuẩn kiểu FILE như: FILE * stdin, stdout, stderr.Các hàm làm việc ở mức thấp – mức lời gọi hệ thống truy cập đến nội dung file: #include int creat(const char *pathname, mode_t mode); int open(const char *pathname, int oflag, mode_t mode); int close(int filedes); off_t seek(int filedes, off_t offset, int whence); ssize_t read(int filedes, void *buf, size_t nbytes); ssize_t write(int filedes, const void *buf, size_t nbytes); int dup(int filedes); int dup2(int filedes, int filedes2);Các hàm truy cập đến thuộc tính của file 3/44#include int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int filedes, struct stat *buf);struct stat { mode_t st_mode; /* file type & mode (permissions) */ ino_t st_ino; /* i-node number (serial number) */ dev_t st_dev; /* device number (file system) */ dev_t st_rdev; /* device number for special files */ nlink_t st_nlink; /* ...
Nội dung trích xuất từ tài liệu:
Các nội dung cần ôn tập với C Các nội dung cần ôn tập với CKiến thức chungKiến thức lập trình C trong UNIX về cơ bản cũng giống như học lập trình trong Borland C 3.1(còn gọi là phiên bản BC cho DOS) cho nên các bạn có thể tham khảo các cú pháp cũng như cáchàm trong BC.Tuy nhiên chúng ta cũng cần nhấn mạnh 1 chút về các vấn đề sau: • Program Arguments. int main(int argc, char *argv[]) . o Chú ý rằng argv[0] luôn có và chính là tên chương trình. o Để lấy các tham số và các đối số một cách đầy đủ thì cần dùng các hàm và biến môi trường như sau: #include int getopt(int argc, char *const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; • Environment Variables. Liệt kê hoặc thiết lập các biến môi trường thông qua các hàm và biến toàn cục như sau: extern char **environ; char *getenv(const char *name); int putenv(const char *string);Có 1 số bài tập như sau: 1. Giả sử có 1 chương trình cần chạy với 1 số options như -i, -l, -r, -f và sau -f sẽ có 1 argument. Khi đó chương trình chạy như sau: $ ./argopt -i -lr hi there -f fred.c -q option: i option: l option: r option: f filename: fred.c argopt: invalid option--q unknown option: q argument: hi there Hãy viết chương trình minh họa để ra kết quả như trên.#include #include int main(int argc, char *argv[]){ int opt; while((opt = getopt(argc, argv, if:lr)) != -1) { switch(opt) { case i: case l: case r: printf(option: %c , opt); break; 1/44 case f: printf(filename: %s , optarg); break; case :: printf(option needs a value ); break; case ?: printf(unknown option: %c , optopt); break; } } for(; optind < argc; optind++) printf(argument: %s , argv[optind]); return(0);} 2. Hãy viết chương trình làm việc với biến môi trường như sau: a. Liệt kê các biến môi trường của tiến trình hiện tại thông qua biến toàn cục environ.#include #include int main(){ char **env = environ; while(*env) { printf(%s ,*env); env++; }return(0);} b. Lấy thông tin của biến môi trường thông qua hàm getenv. Ví dụ như các biến PATH, HOME,…#include #include #include int main(int argc, char *argv[]){ char *var, *value; if(argc == 1 || argc > 3) { fprintf(stderr,usage: environ var [value] ); exit(1); } var = argv[1]; value = getenv(var); if(value) printf(Variable %s has value %s , var, value); else printf(Variable %s has no value , var); if(argc == 3) { char *string; value = argv[2]; 2/44 string = malloc(strlen(var)+strlen(value)+2); if(!string) { fprintf(stderr,out of memory ); exit(1); } strcpy(string,var); strcat(string,=); strcat(string,value); printf(Calling putenv with: %s ,string); if(putenv(string) != 0) { fprintf(stderr,putenv failed ); free(string); exit(1); } value = getenv(var); if(value) printf(New value of %s is %s , var, value); else printf(New value of %s is null?? , var); }return(0);}Làm việc với FileCó hai cơ chế làm việc với File. • Truy cập và thao tác với File thông qua các lời gọi hệ thống. File Descriptor chuẩn: STDIN_FILENO, STDOUT_FILENO, và STDERR_FILENO • Truy cập và thao tác với File thông qua các hàm chuẩn thư viện. con trỏ chuẩn kiểu FILE như: FILE * stdin, stdout, stderr.Các hàm làm việc ở mức thấp – mức lời gọi hệ thống truy cập đến nội dung file: #include int creat(const char *pathname, mode_t mode); int open(const char *pathname, int oflag, mode_t mode); int close(int filedes); off_t seek(int filedes, off_t offset, int whence); ssize_t read(int filedes, void *buf, size_t nbytes); ssize_t write(int filedes, const void *buf, size_t nbytes); int dup(int filedes); int dup2(int filedes, int filedes2);Các hàm truy cập đến thuộc tính của file 3/44#include int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int filedes, struct stat *buf);struct stat { mode_t st_mode; /* file type & mode (permissions) */ ino_t st_ino; /* i-node number (serial number) */ dev_t st_dev; /* device number (file system) */ dev_t st_rdev; /* device number for special files */ nlink_t st_nlink; /* ...
Tìm kiếm theo từ khóa liên quan:
ngôn ngữ C++ chương trình lập trình lập trình C++ lập trình căn bản các bài ôn tập cơ bản lập trình cTài liệu liên quan:
-
114 trang 243 2 0
-
80 trang 222 0 0
-
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 217 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 188 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 134 0 0 -
142 trang 130 0 0
-
124 trang 114 3 0
-
150 trang 105 0 0
-
7 trang 86 0 0
-
87 trang 80 0 0