Có thể chuyển một số giá trị từ dòng lệnh sang 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à đối số dòng lệnh và nhiều khi chúng rất 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 những giá trị đó bên trong mã.
Các đối số dòng lệnh được xử lý bằng cách sử dụng các đối số của hàm main () trong đóargc đề cập đến số lượng đối số được truyền vào và argv [] là một mảng con trỏ trỏ đến mỗi đối số được truyền vào chương trình. Sau đây là một ví dụ đơn giản kiểm tra xem có bất kỳ đối số nào được cung cấp từ dòng lệnh hay không và thực hiện theo cách xử lý -
Ví dụ
#include <stdio.h> 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"); } }
Đầu ra
$./a.out testing The argument supplied is testing
Đầu ra
$./a.out testing1 testing2 Too many arguments supplied.
Đầu ra
$./a.out One argument expected
Cần lưu ý rằng argv [0] giữ tên của chính chương trình và argv [1] là đối số dòng lệnh đầu tiên được cung cấp và * 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 chuyển một đối số thì argc được đặt ở 2.
Bạn chuyển 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 bản thân đối số có khoảng trắng thì bạn có thể chuyển các đối số như vậy bằng cách đặt chúng bên trong dấu ngoặc kép "" hoặc dấu nháy đơn ''. Hãy để chúng tôi viết lại ví dụ trên một lần nữa, nơi chúng tôi sẽ in tên chương trình và chúng tôi cũng chuyển đối số dòng lệnh bằng cách đặt dấu ngoặc kép -
Ví dụ
#include <stdio.h> 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"); } }
Đầu ra
$./a.out "testing1 testing2" Progranm name ./a.out The argument supplied is testing1 testing2