Lập trình C - Tham số dòng trong C
Tham số dòng lệnh là gì?
Đối số dòng lệnh là các đối số chuỗi tùy ý mà người dùng có thể cung cấp cho một chương trình khi thực thi. Các đối số được truyền thông qua hệ điều hành của chương trình và chương trình có thể sử dụng nó như input. Để sử dụng các đối số dòng lệnh trong chương trình, bạn phải khai báo đầy đủ trong hàm main bao gồm hai đối số: số đối số dòng lệnh và danh sách các đối số dòng lệnh.
Để sử dụng tham số dòng lệnh thì cấu hàm main sau:
int main(int argc, char *argv[] )
argc số lượng tham số, tên tập tin là tham số đầu tiên.
argv[] chứa tổng số tham số, tham số đầu tiên luôn luôn là tập tin.
Làm thế nào để sử dụng nó?
Sau đây sẽ là 2 ví dụ minh họa để các bạn có thể hiểu rõ hơn về đối số dòng lệnh.
Ví dụ 1:
#include <stdio.h>
void main(int argc, char *argv[] ) {
printf("Program name is: %s\n", argv[0]);
if(argc < 2){
printf("No argument passed through command line.\n");
}
else{
printf("First argument is: %s\n", argv[1]);
}
}
- Bước 1: Debug chương trình.
- Bước 2: Về màn hình desktop ấn tổ hợp phím Windows + R để mở của sổ Run.
- Bước 3: Gõ cmd chọn OK để mở cửa sổ Command Line.
- Bước 4: Đưa đường dẫn chứa file program.exe và nhập đối số, mỗi đối số cách nhau bằng một khoảng trắng . Ở đây, tôi sẽ nhập "program.exe" để Command line chạy file này và nhập các đối số “Hello world”. Ngoài ra, bạn cũng có thể nhập “program“ vì command line sẽ hiểu rằng bạn muốn chạy file program.exe.
Kết quả:
Program name is: program
First argument is: Hello
Kết quả chương trình sẽ in ra: “program.exe Hello World”. Lúc này số đối số sẽ là argc bằng 3, tương ứng với 2 đối số mà tôi vừa nhập vào và tên của file .exe trong thư mục debug. Lúc này, tên file program.exe chính là argv[0] và argv[1] =”Hello”, argv[2] = “World”.
Nếu bạn truyền nhiều tham số nó chỉ print một
program.exe Hello how are you?
Kết quả:
Program name is: program
First argument is: Hello
Nếu muốn truyền nhiều tham số thêm dấu nháy đôi:
program.exe "Hello how are you? "
Kết quả:
Program name is: program
First argument is: Hello how are you?
Chúng ta có thể print nhiều tham số trong chương trình, trong ví dụ trên chỉ print 1 tham số argv[1].