Có thể truyền một số giá trị từ dòng lệnh tới các chương trình C của bạn khi chúng được thực thi. Những giá trị này được gọi là tham số dòng lệnh trong C, chúng khá quan trọng đối với chương trình của bạn đặc biệt khi bạn muốn kiểm soát chương trình của mình từ bên ngoài thay vì mã hóa cứng các giá trị bên trong mã.
Các tham số dòng lệnh được xử lý bằng cách sử dụng hàm main () trong đó argc tham chiếu đến tham số được truyền, và argv [] là một mảng con trỏ trỏ tới từng tham số được truyền cho chương trình.
Sau đây là một ví dụ đơn giản kiểm tra nếu có bất kỳ tham số nào được cung cấp từ dòng lệnh và thực hiện hành động tương ứng:
#include
int main( int argc, char *argv[] ) {
if( argc == 2 ) {
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 ) {
printf("Too many arguments supplied.\n");
}
else {
printf("One argument expected.\n");
}
}
Khi đoạn mã trên được biên dịch và thực hiện với tham số đơn, nó tạo ra kết quả sau:
$./a.out testing
The argument supplied is testing
Khi đoạn mã trên được biên dịch và thực thi với hai tham số, nó tạo ra kết quả sau:
$./a.out testing1 testing2
Too many arguments supplied.
Khi đoạn mã trên được biên dịch và thực hiện mà không truyền bất kỳ tham số nào, nó tạo ra kết quả sau:
$./a.out
One argument expected
Cần lưu ý rằng:
argv [0] giữ tên của chính chương trình
argv [1] là một con trỏ tới đối số dòng lệnh đầu tiên được cung cấp,
*argv [n] là đối số cuối cùng. Nếu không có đối số nào được cung cấp, argc sẽ là một, và nếu bạn vượt qua một đối số thì argc được đặt ở mức 2.
Tất cả các đối số dòng lệnh được phân tách bằng dấu cách, nhưng nếu tham số có một khoảng trắng thì bạn có thể chuyển các đối số đó bằng cách đặt chúng bên trong dấu ngoặc kép hoặc dấu nháy đơn.
Chúng ta viết lại ví dụ trên một lần nữa, in tên chương trình và chúng tôi cũng thông qua một tham số dòng lệnh bằng cách đặt bên trong dấu ngoặc kép:
#include
int main( int argc, char *argv[] ) {
printf("Program name %s\n", argv[0]);
if( argc == 2 ) {
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 ) {
printf("Too many arguments supplied.\n");
}
else {
printf("One argument expected.\n");
}
}
Khi đoạn mã trên được biên dịch và thực hiện với một tham số riêng biệt phân tách bằng dấu cách bên trong dấu ngoặc kép, nó tạo ra kết quả sau.
$./a.out "testing1 testing2"
Progranm name ./a.out
The argument supplied is testing1 testing2
Một số kiến thức C liên quan khác bạn nên học: