Tham số dòng lệnh trong C



Chương này chỉ thực sự có ý nghĩa với bạn nếu bạn đang sử dụng command promt để biên dịch chương trình. Nó là có thể để truyền các giá trị từ dòng lệnh – command line cho chương trình C khi nó được thực hiện. Những giá trị này được gọi là Tham số dòng lệnh - command line argument và nhiều khi rất quan trọng cho chương trình của bạn khi bạn điều khiển chương trình của bạn bên ngoài thay vì mã hóa thô những giá trị bên trong đoạn code.

Các tham số dòng lệnh được xử lý bởi sử dụng các tham số hàm main(), với argc hướng đến số lượng tham số bạn truyền và argv[] là mảng con trỏ hướng đến bất kì tham số nào cung cấp cho chương trình đó. Dưới đây là ví dụ kiểm tra nếu có bất kỳ tham số được cung cấp từ dòng lệnh và thực hiện các hành động tương ứng:

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   if( argc == 2 )
   {
      printf("Tham so duoc cung cap la: %s\n", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Qua nhieu tham so duoc cung cap.\n");
   }
   else
   {
      printf("Ban nen cung cap mot tham so.\n");
   }
}

Khi đoạn code trên được biên dịch và thực thi với 1 tham số, nó sẽ in ra kết quả sau:

$./a.out thamso1
Tham so duoc cung cap la: thamso1
Quảng cáo

Khi bạn truyền 2 tham số cho đoạn code trên nó sẽ in ra kết quả sau đây:

$./a.out thamso1 thamso2
Qua nhieu tham so duoc cung cap.

Khi đoạn code trên được thực hiện và thực thi với không có tham số nào được truyền vào, nó sẽ in ra kết quả dưới đây:

$./a.out
Ban nen cung cap mot tham so.

Chú ý rằng argv[0] giữ giá trị tên của chính chương trình và argv[1] là một con trỏ đến tham số dòng lệnh đầu tiên đã cung cấp, argv[n] là tham số cuối. Nếu không có tham số nào được cung cấp, argc sẽ là 1, nếu bạn truyền 1 tham số thì sau đó argc có giá trị 2.

Bạn truyền tất cả tham số dòng lệnh riêng rẽ nhau bởi khoảng trắng, những nếu các tham số tự nó có một khoảng trắng thì bạn có thể truyền các tham số này bởi đặt chúng trong dấu trích dẫn kép ("") hoặc trích dẫn đơn (''). Bây giờ chúng ta viết lại chương trình trên khi bạn in ra tên chương trình và truyền các tham số dòng lệnh đặt bên trong dấu trích dẫn kép ("").

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   printf("Ten chuong trinh la: %s\n", argv[0]);
 
   if( argc == 2 )
   {
      printf("Tham so duoc cung cap la: %s\n", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Qua nhieu tham so duoc cung cap.\n");
   }
   else
   {
      printf("Ban nen cung cap mot tham so.\n");
   }
}
Quảng cáo

Khi đoạn code trên được biên dịch và thực hiện với một tham số đơn riêng rẽ bởi dấu cách bên trong dấu trích dẫn kép, kết quả sau đây được in ra:

$./a.out "thamso1 thamso2"

Ten chuong trinh la: ./a.out
Tham so duoc cung cap la: thamso1 thamso2

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học lập trình C phổ biến khác tại VietJack:



Tài liệu giáo viên