อาร์กิวเมนต์บรรทัดคำสั่งใน C อธิบาย
เผยแพร่แล้ว: 2022-04-29อาร์กิวเมนต์บรรทัดคำสั่งจะใช้เมื่อโปรแกรมจำเป็นต้องถูกควบคุมจากภายนอกแทนที่จะเป็นภายใน มันเป็นส่วนต่อประสานข้อความสำหรับนักพัฒนาที่อาร์กิวเมนต์ถูกส่งไปยังวิธีการหลักโดยตรง
ค่าที่ส่งผ่านภายในฟังก์ชันเมื่อมีการเรียกจะเรียกว่าเป็นอาร์กิวเมนต์ กล่าวอีกนัยหนึ่ง อาร์กิวเมนต์คือพารามิเตอร์ที่ส่งผ่านไปยังเมธอดที่กำหนดเมื่อเรียกใช้
ไวยากรณ์ :
int main() { /* … */ }
โค้ดข้างต้นได้รับคำสั่งและส่งผ่านไปยังระบบปฏิบัติการของคอมพิวเตอร์เพื่อให้ทำงาน คำสั่งเหล่านี้จะถูกเรียกใช้เสมอเมื่อมีการเรียกใช้โค้ด
อาร์กิวเมนต์บรรทัดคำสั่ง CC และ C++ นั้นค่อนข้างง่ายต่อการใช้งาน เนื่องจากความเรียบง่ายและไวยากรณ์ที่ถอดรหัสได้ง่าย
ในการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่ง ฟังก์ชันหลักต้องถูกกำหนดโดยสองอาร์กิวเมนต์:
- จำนวนอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด
- รายการอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด
ไวยากรณ์ :
int main (int argc, ถ่าน *argv[]) { /* … */ }
- argc (ARGument Count) ถูกกำหนดให้เป็นชนิดข้อมูลจำนวนเต็มที่เก็บจำนวนอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด เป็นที่เข้าใจกันว่าค่านี้ควรเป็นค่าที่ไม่เป็นลบเสมอ
- 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 –
$ ./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 ฯลฯ
ข้อใดคือตัวคั่นที่ใช้แยกอาร์กิวเมนต์บรรทัดคำสั่ง
ในการแยกอาร์กิวเมนต์บรรทัดคำสั่ง โดยทั่วไปจะใช้ช่องว่าง โดยแยกชื่อคำสั่งออกจากพารามิเตอร์และแยกพารามิเตอร์ต่างๆ ออกจากกัน พวกเขายังมีประโยชน์ในขณะที่แยกรายการของค่าต่างๆ ช่องว่างหลายช่องมักจะถือว่าเป็นช่องว่างเดียว ข้อยกเว้นประการเดียวสำหรับสิ่งนี้เกิดขึ้นในสตริงที่ยกมาหรือความคิดเห็นที่อยู่ในเครื่องหมายอัญประกาศเดี่ยว
เป็นไปได้ไหมที่จะแปลงอาร์กิวเมนต์บรรทัดคำสั่ง?
อาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดจะถูกส่งต่อเป็นสตริง โปรแกรมเมอร์หรือผู้ใช้ต้องแปลงค่าตัวเลขให้เป็นแบบฟอร์มภายในเสมอโดยใช้ความพยายามด้วยตนเอง ฟังก์ชันหลักรับพารามิเตอร์เสมอ ซึ่งมักจะเป็นอาร์เรย์ของสตริง นี่เป็นอาร์กิวเมนต์ของฟังก์ชันเดียวที่ฟังก์ชันหลักยอมรับ ชนิดข้อมูลสตริงถูกสร้างขึ้นเพื่อใช้ในขณะที่จัดเก็บอาร์กิวเมนต์บรรทัดคำสั่ง