Menguasai Argumen Baris Perintah dalam C: Panduan Praktis
Mungkin untuk melewatkan beberapa nilai dari baris perintah ke program C Anda saat dieksekusi. Nilai-nilai ini disebut argumen baris perintah dan kadang-kadang mereka penting untuk program Anda terutama ketika Anda ingin mengontrol program Anda dari luar alih-alih mengkode-kodekan nilai-nilai tersebut di dalam kode.
Argumen baris perintah ditangani menggunakan argumen fungsi main() di mana argc merujuk pada jumlah argumen yang diteruskan, dan argv[] adalah array pointer yang menunjuk ke setiap argumen yang diteruskan ke program. Berikut adalah contoh sederhana yang memeriksa apakah ada argumen yang diberikan dari baris perintah dan mengambil tindakan sesuai dengan itu −
#include <stdio.h> int main( int argc, char *argv[] ) { if( argc == 2 ) { printf("Argumen yang diberikan adalah %s\n", argv[1]); } else if( argc > 2 ) { printf("Terlalu banyak argumen yang diberikan.\n"); } else { printf("Satu argumen yang diharapkan.\n"); } } Ketika kode di atas dikompilasi dan dieksekusi dengan satu argumen, hasilnya adalah sebagai berikut.
$./a.out testing Argumen yang diberikan adalah testing
Ketika kode di atas dikompilasi dan dieksekusi dengan dua argumen, hasilnya adalah sebagai berikut.
$./a.out testing1 testing2 Terlalu banyak argumen yang diberikan.
Ketika kode di atas dikompilasi dan dieksekusi tanpa melewatkan argumen apa pun, hasilnya adalah sebagai berikut.
$./a.out Satu argumen yang diharapkan
Perlu diperhatikan bahwa argv[0] menyimpan nama program itu sendiri dan argv[1] adalah pointer ke argumen baris perintah pertama yang diberikan, dan *argv[n] adalah argumen terakhir. Jika tidak ada argumen yang diberikan, argc akan bernilai satu, dan jika Anda melewatkan satu argumen maka argc diatur ke 2.
Anda melewatkan semua argumen baris perintah yang dipisahkan oleh spasi, tetapi jika argumen itu sendiri memiliki spasi maka Anda dapat melewatkan argumen semacam itu dengan menempatkannya di dalam tanda kutip ganda "" atau tanda kutip tunggal ''. Mari kita tulis ulang contoh di atas sekali lagi tempat kita akan mencetak nama program dan kita juga melewatkan argumen baris perintah dengan menempatkannya di dalam tanda kutip ganda −
#include <stdio.h> int main( int argc, char *argv[] ) { printf("Nama program %s\n", argv[0]); if( argc == 2 ) { printf("Argumen yang diberikan adalah %s\n", argv[1]); } else if( argc > 2 ) { printf("Terlalu banyak argumen yang diberikan.\n"); } else { printf("Satu argumen yang diharapkan.\n"); } } Ketika kode di atas dikompilasi dan dieksekusi dengan satu argumen yang dipisahkan oleh spasi tetapi di dalam tanda kutip ganda, hasilnya adalah sebagai berikut.
$./a.out "testing1 testing2" Nama program ./a.out Argumen yang diberikan adalah testing1 testing2