Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

อาร์กิวเมนต์บรรทัดคำสั่งใน C/C++


เป็นไปได้ที่จะส่งค่าบางค่าจากบรรทัดคำสั่งไปยังโปรแกรม C ของคุณเมื่อดำเนินการ ค่าเหล่านี้เรียกว่าอาร์กิวเมนต์บรรทัดคำสั่ง และหลายครั้งก็มีความสำคัญสำหรับโปรแกรมของคุณ โดยเฉพาะเมื่อคุณต้องการควบคุมโปรแกรมของคุณจากภายนอก แทนที่จะต้องฮาร์ดโค้ดค่าเหล่านั้นภายในโค้ด

อาร์กิวเมนต์บรรทัดคำสั่งได้รับการจัดการโดยใช้อาร์กิวเมนต์ของฟังก์ชัน main() โดยที่อาร์กิวเมนต์อ้างอิงถึงจำนวนอาร์กิวเมนต์ที่ส่งผ่าน และ argv[] คืออาร์เรย์ตัวชี้ที่ชี้ไปยังอาร์กิวเมนต์แต่ละตัวที่ส่งผ่านไปยังโปรแกรม ต่อไปนี้เป็นตัวอย่างง่ายๆ ซึ่งจะตรวจสอบว่ามีข้อโต้แย้งใด ๆ ที่มาจากบรรทัดคำสั่งและดำเนินการตามนั้นหรือไม่ -

ตัวอย่าง

#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");
   }
}

ผลลัพธ์

$./a.out testing
The argument supplied is testing

ผลลัพธ์

$./a.out testing1 testing2
Too many arguments supplied.

ผลลัพธ์

$./a.out
One argument expected

ควรสังเกตว่า argv[0] มีชื่อของโปรแกรมเอง และ argv[1] เป็นตัวชี้ไปยังอาร์กิวเมนต์บรรทัดคำสั่งแรกที่ให้มา และ *argv[n] คืออาร์กิวเมนต์สุดท้าย หากไม่มีการระบุอาร์กิวเมนต์ argc จะเป็นอาร์กิวเมนต์ และหากคุณส่งผ่านหนึ่งอาร์กิวเมนต์ argc จะถูกตั้งค่าเป็น 2

คุณส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดที่คั่นด้วยช่องว่าง แต่ถ้าอาร์กิวเมนต์มีช่องว่าง คุณสามารถส่งผ่านอาร์กิวเมนต์ดังกล่าวได้โดยใส่ไว้ในเครื่องหมายคำพูดคู่ "" หรือเครื่องหมายคำพูดเดี่ยว '' ให้เราเขียนตัวอย่างข้างต้นใหม่อีกครั้งโดยที่เราจะพิมพ์ชื่อโปรแกรมและเราส่งอาร์กิวเมนต์บรรทัดคำสั่งด้วยการใส่เครื่องหมายคำพูดคู่ -

ตัวอย่าง

#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");
   }
}

ผลลัพธ์

$./a.out "testing1 testing2"
Progranm name ./a.out
The argument supplied is testing1 testing2