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

เผยแพร่แล้ว: 2022-04-29

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

ค่าที่ส่งผ่านภายในฟังก์ชันเมื่อมีการเรียกจะเรียกว่าเป็นอาร์กิวเมนต์ กล่าวอีกนัยหนึ่ง อาร์กิวเมนต์คือพารามิเตอร์ที่ส่งผ่านไปยังเมธอดที่กำหนดเมื่อเรียกใช้

ไวยากรณ์ :

int main() { /* … */ }

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

อาร์กิวเมนต์บรรทัดคำสั่ง CC และ C++ นั้นค่อนข้างง่ายต่อการใช้งาน เนื่องจากความเรียบง่ายและไวยากรณ์ที่ถอดรหัสได้ง่าย

ในการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่ง ฟังก์ชันหลักต้องถูกกำหนดโดยสองอาร์กิวเมนต์:

  1. จำนวนอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด
  2. รายการอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด

ไวยากรณ์ :

int main (int argc, ถ่าน *argv[]) { /* … */ }

  1. argc (ARGument Count) ถูกกำหนดให้เป็นชนิดข้อมูลจำนวนเต็มที่เก็บจำนวนอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด เป็นที่เข้าใจกันว่าค่านี้ควรเป็นค่าที่ไม่เป็นลบเสมอ
  2. argv (ARGument Vector) หมายถึงอาร์เรย์ของพอยน์เตอร์ของประเภทข้อมูลอักขระที่ใช้เก็บรายการอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด

ด้วยความช่วยเหลือของบรรทัดคำสั่ง นักพัฒนาสามารถเข้าถึงไฟล์และโฟลเดอร์ต่างๆ บนคอมพิวเตอร์ของตนได้ โปรแกรมที่กำหนดซึ่งมีอาร์กิวเมนต์บรรทัดคำสั่งหลายรายการอาจระบุแหล่งที่มาหรือปลายทางของข้อมูลที่กำหนดได้อย่างรวดเร็ว นอกจากนี้ยังมีศักยภาพในการปรับเปลี่ยนการทำงานของโปรแกรม ทำให้กระบวนการสร้างง่ายขึ้นในการควบคุมแหล่งที่มา

ในด้านการพัฒนา งานที่หลากหลายไม่ต้องการการแสดงภาพจริง ในกรณีดังกล่าว ฟังก์ชันทั้งหมดสามารถทำได้โดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง มีข้อกำหนดที่หายากมากสำหรับอินเทอร์เฟซแบบกราฟิกตามตัวอักษร วิธีนี้ช่วยประหยัดการเงิน ความพยายาม และทรัพยากรได้มาก

เรียนรู้หลักสูตรการพัฒนาซอฟต์แวร์ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

สารบัญ

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

อาร์กิวเมนต์บรรทัดคำสั่งมีคุณสมบัติที่น่าสนใจและมีประโยชน์ค่อนข้างน้อย พวกเขามีดังนี้:

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

ตัวอย่างของอาร์กิวเมนต์บรรทัดคำสั่ง

ต่อไปนี้เป็นโปรแกรมสาธิตสำหรับอาร์กิวเมนต์บรรทัดคำสั่งใน C:

// โปรแกรม C เพื่อแสดง

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

#รวม<stdio.h>

int main(int argc,char* argv[])

{

เคาน์เตอร์ int;

printf(“ชื่อโปรแกรมคือ: %s”,argv[0]);

ถ้า(argc==1)

printf(“\nไม่มีอาร์กิวเมนต์บรรทัดคำสั่งพิเศษที่ส่งผ่านนอกเหนือจากชื่อโปรแกรม”);

ถ้า(argc>=2)

{

printf(“\nจำนวนอาร์กิวเมนต์ที่ผ่าน: %d”,argc);

printf(“\n—-กำลังติดตามอาร์กิวเมนต์บรรทัดคำสั่งผ่าน—-“);

สำหรับ(ตัวนับ=0;ตัวนับ<argc;ตัวนับ++)

printf(“\nargv[%d]: %s”,ตัวนับ,argv[ตัวนับ]);

}

กลับ 0;

}

ผลลัพธ์จะแตกต่างกันไปตามสถานการณ์ต่างๆ พวกเขาได้รับการอธิบายเพิ่มเติมเป็นรายบุคคล

  1. โดยไม่มีข้อโต้แย้ง:

ในการสร้างผลลัพธ์ต่อไปนี้ ต้องรันโค้ดโดยไม่ผ่านอาร์กิวเมนต์:

เอาท์พุต 1

$ ./a.out

ชื่อโปรแกรม: ./a.out

ไม่มีอาร์กิวเมนต์บรรทัดคำสั่งพิเศษที่ส่งผ่านนอกจากชื่อโปรแกรม

  • ด้วยสามอาร์กิวเมนต์:

ในการสร้างผลลัพธ์ต่อไปนี้ โค้ดจะต้องดำเนินการด้วยสามอาร์กิวเมนต์

เอาท์พุต 2 –

$ ./a.out แรก สอง สาม

ชื่อโปรแกรม: ./a.out

จำนวนอาร์กิวเมนต์ที่ผ่าน: 4

—-ต่อไปนี้เป็นอาร์กิวเมนต์บรรทัดคำสั่งผ่าน—-

argv[0]: ./a.out

argv[1]: ก่อน

argv[2]: วินาที

argv[3]: ที่สาม

  • ด้วยอาร์กิวเมนต์เดียว:

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

เอาท์พุต 3 –

$ ./a.out “ครั้งแรก วินาทีที่สาม.”

ชื่อโปรแกรม: ./a.out

จำนวนอาร์กิวเมนต์ที่ผ่าน: 2

—-ต่อไปนี้เป็นอาร์กิวเมนต์บรรทัดคำสั่งผ่าน—-

argv[0]: ./a.out

argv[1]: First Second Third

  • ด้วยอาร์กิวเมนต์เดียวในเครื่องหมายคำพูดและคั่นด้วยช่องว่าง:

รหัสต้องถูกคอมไพล์และดำเนินการด้วยอาร์กิวเมนต์เดียวที่คั่นด้วยช่องว่าง แต่อยู่ภายในเครื่องหมายคำพูดเดียวเพื่อสร้างผลลัพธ์ต่อไปนี้

เอาท์พุต 4 –

$ ./a.out 'แรก สอง สาม'

ชื่อโปรแกรม: ./a.out

จำนวนอาร์กิวเมนต์ที่ผ่าน: 2

—-ต่อไปนี้เป็นอาร์กิวเมนต์บรรทัดคำสั่งผ่าน—-

argv[0]: ./a.out

argv[1]: First Second Third

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

มีประโยชน์หลายประการของการใช้อาร์กิวเมนต์บรรทัดคำสั่งใน C ดังต่อไปนี้:

  • อาร์กิวเมนต์บรรทัดคำสั่งในภาษา C สามารถใช้เมื่อโปรแกรมเมอร์หรือผู้ใช้ต้องการส่งค่าจากภายในไปยังโปรแกรม แทนที่จะทำภายใน
  • แอปพลิเคชันบรรทัดคำสั่งสามารถทำได้ง่ายมากเพื่อใช้ในแบตช์ไฟล์หรือสคริปต์ นี่เป็นความช่วยเหลืออย่างมากในการทดสอบอัตโนมัติหรืองานสร้างที่เกี่ยวข้อง
  • บรรทัดคำสั่งจะพัฒนาได้ง่ายขึ้นหากโปรแกรมเมอร์เขียนเครื่องมือแทนการใช้ การป้อนอาร์กิวเมนต์ถือเป็นงานที่ซับซ้อนและใช้เวลานานกว่าการส่งออกสตรีมข้อความ
  • สตรีมอินพุต เอาต์พุต และข้อผิดพลาดสามารถเปลี่ยนเส้นทางได้ง่ายมากเมื่อสามารถส่งหรือรับข้อมูลจากไฟล์และแอปพลิเคชันต่างๆ
  • กลไกการส่งคืนข้อผิดพลาดในอาร์กิวเมนต์บรรทัดคำสั่งนั้นค่อนข้างมาตรฐานและเรียบง่าย
  • เมื่อโปรแกรมเมอร์หรือผู้ใช้พยายามเข้าถึงจากที่บ้านหรือบนท้องถนน โดยพื้นฐานแล้วในขณะที่เป็นมือถือ การใช้งานผ่านรีโมตเชลล์หรือการเชื่อมต่ออื่นๆ ที่คล้ายคลึงกันช่วยให้ทำงานได้ง่ายขึ้นอย่างน้อยที่สุด
  • สำหรับฟังก์ชันการระบุไฟล์หลายไฟล์ มาตรฐานไวยากรณ์ไวด์การ์ดที่กำหนดไว้นั้นมีอยู่ ซึ่งดึงมาจากความรู้ที่มีอยู่ของนักพัฒนาซอฟต์แวร์หรือโปรแกรมเมอร์
  • บรรทัดคำสั่งมีความน่าสนใจและรวดเร็วมาก

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

#include <stdio.h>

#include <conio.h>

//เมธอดหลักถูกเรียกไปยังอาร์กิวเมนต์บรรทัดคำสั่งที่ส่งผ่านไปยังโปรแกรม

int main(int argc, ถ่าน *argv[])

{

//กำหนดตัวแปรจำนวนเต็ม

int ก;

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

ถ้า (argc >= 2)

{

printf(“อาร์กิวเมนต์ที่ส่งไปยังโปรแกรมคือ:\n”);

สำหรับ (a = 1; a < argc; a++)

{

printf(“อาร์กิวเมนต์ที่ส่งไปยังโปรแกรมคือ: %s\t”, argv[a]);

}

}

อื่น

{

printf("ไม่มีอาร์กิวเมนต์ถูกส่งไปยังโปรแกรม\n");

}

กลับ 0;

}

เอาท์พุท:

ไม่มีอาร์กิวเมนต์ถูกส่งไปยังโปรแกรม

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

บทสรุป

เรียนรู้เพิ่มเติมเกี่ยวกับความสำคัญของอาร์กิวเมนต์บรรทัดคำสั่งใน C และ C++ โดยการลงทะเบียนสำหรับโปรแกรม Executive PG ของ Grad ในการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญพิเศษในการพัฒนาแบบเต็มสแต็ หลักสูตรระยะเวลา 13 เดือนได้รับการออกแบบมาเพื่อช่วยให้ผู้เชี่ยวชาญด้านไอทีเชี่ยวชาญด้าน Java, Spring, Hibernate, HTML, React, Git และภาษาการเขียนโปรแกรมและเครื่องมืออื่นๆ มากมาย เพื่อสร้างแอปพลิเคชันที่ซับซ้อน เช่น Quora และ Swiggy

โปรแกรมนี้ยังให้การรับรองสำหรับผู้บริหารฟรี 4 เดือนใน Data Science & Machine Learning

อะไรคือข้อเสียพื้นฐานที่โปรแกรมเมอร์ต้องเผชิญในขณะที่ใช้อาร์กิวเมนต์บรรทัดคำสั่งใน C?

แม้ว่าอาร์กิวเมนต์บรรทัดคำสั่งในภาษา C จะสะดวกสำหรับนักพัฒนาและโปรแกรมเมอร์ แต่ก็มีข้อเสียอยู่บ้าง ผู้ที่ไม่มีความรู้พื้นฐานและไม่คุ้นเคยกับการทำงานกับคำสั่งเหล่านี้ อาจพิสูจน์ได้ว่าค่อนข้างท้าทายในการเรียนรู้และปรับตัว โดยเฉพาะในช่วงเวลาสั้นๆ อย่างไรก็ตาม นี่ไม่ใช่ปัญหาสำหรับโปรแกรมเมอร์และนักพัฒนาที่เชี่ยวชาญ แต่ก็เป็นอุปสรรคในบางครั้งสำหรับพนักงานรุ่นน้องที่อาจมาจากสาขาอื่นหรือใกล้เคียงกัน นอกจากนี้ อาร์กิวเมนต์บรรทัดคำสั่งจำเป็นต้องมีแป้นพิมพ์เพื่อใช้งานและดำเนินการ สิ่งนี้มักจะกลายเป็นอุปสรรคหากมีคนต้องการเข้าถึงผ่านโทรศัพท์หรือ iPad ฯลฯ

ข้อใดคือตัวคั่นที่ใช้แยกอาร์กิวเมนต์บรรทัดคำสั่ง

ในการแยกอาร์กิวเมนต์บรรทัดคำสั่ง โดยทั่วไปจะใช้ช่องว่าง โดยแยกชื่อคำสั่งออกจากพารามิเตอร์และแยกพารามิเตอร์ต่างๆ ออกจากกัน พวกเขายังมีประโยชน์ในขณะที่แยกรายการของค่าต่างๆ ช่องว่างหลายช่องมักจะถือว่าเป็นช่องว่างเดียว ข้อยกเว้นประการเดียวสำหรับสิ่งนี้เกิดขึ้นในสตริงที่ยกมาหรือความคิดเห็นที่อยู่ในเครื่องหมายอัญประกาศเดี่ยว

เป็นไปได้ไหมที่จะแปลงอาร์กิวเมนต์บรรทัดคำสั่ง?

อาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดจะถูกส่งต่อเป็นสตริง โปรแกรมเมอร์หรือผู้ใช้ต้องแปลงค่าตัวเลขให้เป็นแบบฟอร์มภายในเสมอโดยใช้ความพยายามด้วยตนเอง ฟังก์ชันหลักรับพารามิเตอร์เสมอ ซึ่งมักจะเป็นอาร์เรย์ของสตริง นี่เป็นอาร์กิวเมนต์ของฟังก์ชันเดียวที่ฟังก์ชันหลักยอมรับ ชนิดข้อมูลสตริงถูกสร้างขึ้นเพื่อใช้ในขณะที่จัดเก็บอาร์กิวเมนต์บรรทัดคำสั่ง