Argumen fungsi studio visual c utama. Argumen Fungsi Utama()

Argumen opsional dan bernama

Argumen Opsional

C# 4.0 memperkenalkan fitur baru yang meningkatkan kemudahan dalam menentukan argumen saat memanggil metode. Alat ini disebut argumen opsional dan memungkinkan Anda menentukan nilai default untuk parameter metode. Nilai ini akan digunakan secara default jika tidak ada argumen terkait yang ditentukan untuk parameter saat metode dipanggil. Oleh karena itu, tidak perlu menentukan argumen untuk parameter tersebut. Argumen opsional mempermudah pemanggilan metode, di mana argumen default diterapkan ke beberapa parameter. Mereka juga dapat digunakan sebagai bentuk "pendek" dari metode overloading.

Dorongan utama untuk menambahkan argumen opsional adalah kebutuhan untuk menyederhanakan interaksi dengan objek COM. Di beberapa model objek Microsoft (misalnya, kantor Microsoft) fungsionalitas disediakan melalui objek COM, banyak di antaranya telah lama ditulis dan dirancang untuk menggunakan parameter opsional.

Contoh penggunaan argumen opsional ditunjukkan di bawah ini:

Menggunakan Sistem; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan Sistem.Teks; namespace ConsoleApplication1 ( class Program ( // Argumen b dan c bersifat opsional saat memanggil static int mySum(int a, int b = 5, int c = 10) ( return a + b + c; ) static void Main() ( int sum1 = mySum(3); int sum2 = mySum(3,12); Console.WriteLine("Jumlah1 = "+sum1); Console.WriteLine("Jumlah2 = "+sum2); Console.ReadLine(); ) ) )

Perlu diingat bahwa semua argumen opsional harus ditunjukkan di sebelah kanan argumen yang diperlukan. Selain metode, argumen opsional dapat digunakan dalam konstruktor, pengindeks, dan delegasi.

Salah satu keuntungan dari argumen opsional adalah bahwa argumen tersebut memudahkan pemrogram untuk menangani pemanggilan metode dan konstruktor yang kompleks. Lagi pula, seringkali diperlukan untuk mengatur lebih banyak parameter dalam suatu metode daripada yang biasanya diperlukan. Dan dalam kasus seperti ini, beberapa parameter ini dapat dibuat opsional dengan menggunakan argumen opsional secara hati-hati. Ini berarti bahwa Anda hanya perlu menyampaikan argumen yang penting dalam diberikan kasus tertentu, tidak semua argumen, yang seharusnya diperlukan. Pendekatan ini memungkinkan kita untuk merasionalisasi metode dan menyederhanakan penanganan programmer terhadapnya.

Argumen bernama

Satu lagi Kegunaan, yang ditambahkan ke C# dengan dirilisnya .NET 4.0, adalah dukungan untuk apa yang disebut argumen bernama. Seperti yang Anda ketahui, saat meneruskan argumen ke suatu metode, urutan kemunculannya, sebagai aturan, harus sesuai dengan urutan parameter yang ditentukan dalam metode itu sendiri. Dengan kata lain, nilai argumen ditetapkan ke parameter berdasarkan posisinya dalam daftar argumen.

Argumen bernama dirancang untuk mengatasi batasan ini. Argumen bernama memungkinkan Anda menentukan nama parameter yang nilainya ditetapkan. Dan dalam hal ini, urutan argumen tidak lagi menjadi masalah. Dengan demikian, argumen bernama agak mirip dengan penginisialisasi objek yang disebutkan sebelumnya, meskipun berbeda dari mereka dalam sintaksisnya. Untuk menentukan argumen berdasarkan nama, gunakan bentuk sintaks berikut:

parameter_name: nilai

Di Sini nama_parameter menunjukkan nama parameter yang nilai dilewatkan. Tentu saja, nama_parameter harus merupakan nama parameter yang valid untuk metode yang dipanggil.

Kebetulan data ditransfer ke program dari baris perintah saat dipanggil. Data semacam itu disebut argumen baris perintah. Ini terlihat seperti ini, misalnya:

./a.out test.txt ls -lt /home/peter/

Ini memanggil program a.out (dari direktori saat ini) dan ls (dari direktori yang sama yang ditentukan dalam variabel lingkungan PATH). Program pertama dari baris perintah menerima satu kata - test.txt, yang kedua - dua: -lt dan /home/peter/.

Jika program ditulis dalam C, maka saat dijalankan, kontrol segera ditransfer ke fungsi main(), oleh karena itu, dialah yang menerima argumen baris perintah yang ditetapkan ke parameter variabelnya.

Sejauh ini, kita telah mendefinisikan fungsi main() seolah-olah tidak mengambil parameter apa pun dan tidak mengembalikan apa pun. Faktanya, di C, fungsi apa pun secara default (jika tidak ada yang ditentukan) mengembalikan bilangan bulat. Ini bisa diverifikasi. Jika Anda menulis kode seperti ini:

main() ( printf("Hai \N") ; kembali 0 ; )

Maka tidak ada peringatan atau kesalahan yang akan terjadi selama kompilasi. Hal yang sama akan terjadi jika kita menulis int main() . Ini membuktikan bahwa fungsi default mengembalikan bilangan bulat dan bukan tidak ada (kosong). Meskipun fungsi yang dikembalikan selalu dapat "ditimpa", misalnya, voidmain() atau float main() .

Ketika sebuah program dipanggil dari baris perintah, sepasang data selalu diteruskan ke sana:

  1. bilangan bulat, menunjukkan jumlah kata (elemen yang dipisahkan oleh spasi) pada baris perintah saat dipanggil,
  2. pointer ke array string, di mana setiap baris adalah satu kata dari baris perintah.

Perhatikan bahwa nama program itu sendiri juga dipertimbangkan. Misalnya, jika panggilannya terlihat seperti ini:

./a.out 12 tema 2

Maka argumen pertama dari program adalah 4, dan larik string didefinisikan sebagai ("./a.out", "12", "theme", "2").

Perhatikan terminologinya, hanya ada dua argumen program (angka dan larik), tetapi argumen baris perintah sebanyak yang Anda suka. Argumen baris perintah "diterjemahkan" menjadi argumen program (menjadi argumen ke fungsi main()).
Data ini (angka dan penunjuk) diteruskan ke program meskipun hanya dipanggil dengan nama tanpa meneruskan apa pun ke program: ./a.out. Dalam hal ini, argumen pertama adalah 1, dan argumen kedua menunjuk ke array yang hanya terdiri dari satu string (""./a.out").

Fakta bahwa data diteruskan ke program tidak berarti bahwa fungsi main() harus menerimanya. Jika fungsi main() didefinisikan tanpa parameter, maka argumen baris perintah tidak dapat diakses. Meskipun tidak ada yang menghalangi Anda untuk mengirimnya. Tidak ada kesalahan yang akan terjadi.

Untuk mendapatkan akses ke data yang diteruskan ke program, mereka harus ditugaskan ke variabel. Karena argumen langsung diteruskan ke main() , tajuknya akan terlihat seperti ini:
utama (int n, char *arr)

Variabel pertama (n) berisi jumlah kata, dan variabel kedua berisi pointer ke array string. Seringkali parameter kedua ditulis sebagai **arr . Namun, itu adalah sama. Ingat bahwa array string itu sendiri berisi pointer ke string sebagai elemennya. Dan dalam fungsi kami meneruskan pointer ke elemen pertama dari array. Ternyata kita meneruskan pointer ke pointer, mis. **arr.

Latihan
Tulis program seperti ini:

#termasuk int main(int argc, char ** argv) ( int i; printf ("%d \N", argc); untuk (i= 0 ; i< argc; i++ ) puts (argv[ i] ) ; }

Ini mencetak jumlah kata pada baris perintah saat dipanggil, dan setiap kata dengan garis baru. Sebut saja tanpa argumen baris perintah dan dengan argumen.

Dalam program ini, kami menggunakan parameter variabel argc dan argv. Biasanya menggunakan nama seperti itu saja, tetapi sebenarnya bisa apa saja. Lebih baik mematuhi standar ini sehingga program Anda lebih mudah dipahami tidak hanya oleh Anda, tetapi juga oleh programmer lain.

Pentingnya Praktis Melewati Data ke Program

Jika Anda memiliki pengalaman dengan baris perintah GNU/Linux, Anda tahu bahwa sebagian besar perintah memiliki sakelar dan argumen. Misalnya, saat melihat konten direktori, menyalin, memindahkan, objek ditentukan sebagai argumen berkas sistem di mana perintah dijalankan. Fitur implementasinya ditentukan menggunakan kunci. Misalnya pada perintah

Cp -r ../les_1 ../les_101

cp adalah nama perintah, -r adalah saklar, dan ../les_1 dan ../les_101 adalah argumen perintah.

Secara umum, paling sering, ketika program diluncurkan, alamat file dan "pengubah" (ini adalah kunci) dari proses eksekusi program ditransfer.

Mari kita menulis sebuah program yang membuka file yang ditentukan oleh pengguna pada baris perintah untuk menulis atau menambahkan dan menulis (menambahkan) di sana informasi yang sama yang dimasukkan pengguna dari keyboard selama eksekusi program:

#termasuk #termasuk main (int argc, char ** argv) ( int i, ch; FILE * f[ 5 ] ; if (argc< 3 || argc >7 ) ( menempatkan ( "Jumlah parameter tidak valid") ; kembali 1 ; ) if (strcmp (argv[ 1 ] , "-w" ) != 0 && strcmp (argv[ 1 ] , "-a" ) != 0 ) ( menempatkan ( "Parameter pertama bisa berupa -w atau -a") ; kembali 2 ; ) untuk (i= 0 ; i< argc- 2 ; i++ ) { f[ i] = fopen (argv[ i+ 2 ] , argv[ 1 ] + 1 ) ; if (f[ i] == NULL) { printf ("File %s tidak bisa dibuka\n", argv[ i+ 2 ] ); kembali 3 ; ) ) while ((ch = getchar () ) != EOF) for (i= 0 ; i< argc- 2 ; i++ ) putc (ch, f[ i] ) ; for (i= 0 ; i < argc- 2 ; i++ ) fclose (f[ i] ) ; return 0 ; }

Penjelasan untuk kode:

  1. Sebuah array dari lima pointer file dibuat. Oleh karena itu, tidak lebih dari lima file yang dapat dibuka secara bersamaan. Penunjuk file dari file pertama akan disimpan dalam elemen array f, yang kedua - di f, dan seterusnya.
  2. Jumlah argumen baris perintah diperiksa. Setidaknya harus ada tiga, karena. yang pertama adalah nama programnya, yang kedua adalah mode buka file, yang ketiga adalah file pertama atau satu-satunya yang akan ditulis. Karena program hanya memungkinkan Anda untuk membuka lima file, jumlah total argumen baris perintah tidak boleh lebih dari tujuh. Oleh karena itu, jika jumlah argumen kurang dari 3 atau lebih dari 7, maka program berakhir karena Pernyataan return menyebabkan fungsi keluar, meskipun ada lebih banyak kode setelahnya. Nilai pengembalian fungsi yang tidak sama dengan 0 dapat diinterpretasikan oleh proses induk sebagai pesan bahwa program diakhiri dengan kesalahan.
  3. Kebenaran argumen baris perintah kedua diperiksa. Jika bukan "-w" atau "-a", maka ekspresi kondisional di if kedua mengembalikan 1 (benar). Fungsi strcmp() memungkinkan Anda untuk membandingkan string dan mengembalikan 0 jika keduanya sama.
  4. DI DALAM untuk putaran file dibuka di alamat yang ditentukan yang dimulai dengan elemen ketiga dari array argv. Itu sebabnya 2 ditambahkan ke i untuk mendapatkan elemen array argv, mulai dari yang ketiga. Ekspresi argc-2 menunjukkan jumlah nama file yang diteruskan; Karena argc menyimpan jumlah total argumen baris perintah, dua yang pertama bukan nama file.
  5. Ekspresi argv+1 memungkinkan Anda untuk "memotong" substring "w" (atau "a") dari string "-w" (atau "-a"), karena argv pada dasarnya adalah penunjuk ke elemen pertama string. Dengan menambahkan satu ke penunjuk, kami menggesernya ke elemen berikutnya dalam larik.
  6. Jika file tidak dapat dibuka, fungsi fopen() mengembalikan NULL. Dalam hal ini, program berakhir.
  7. Setiap karakter yang dimasukkan oleh pengguna dari keyboard ditulis ke semua file yang terbuka.
  8. Pada akhirnya, file ditutup.

Saat secara otomatis membuat aplikasi konsol dalam bahasa pemrograman C++, fungsi utama dibuat secara otomatis yang sangat mirip dengan yang ini:

int main(int argc, char * argv)
{…}

Header fungsi berisi tanda tangan fungsi utama main() dengan argumen argc dan argv .
Jika program dijalankan melalui baris perintah, maka dimungkinkan untuk mentransfer informasi apa pun ke program ini. Ada argumen baris perintah argc dan argv untuk ini.
Parameter argc bertipe int , dan berisi jumlah parameter yang diteruskan ke fungsi utama. Selain itu, argc selalu minimal 1, meskipun tidak ada informasi yang diteruskan ke fungsi utama, karena nama aplikasi dianggap sebagai parameter pertama.
Parameter argv adalah larik pointer ke string. Hanya data tipe string yang dapat dilewatkan melalui baris perintah.

Saat memulai program melalui perintah Garis jendela Anda dapat mengirim beberapa informasi ke sana. Dalam hal ini, baris perintah akan terlihat seperti:
Drive:\path\name.exe argument1 argument2 ...

Argumen baris perintah dipisahkan oleh satu atau lebih spasi.

Argumen argv berisi nama aplikasi yang memenuhi syarat:

#termasuk
menggunakan namespace std;

cout<< argv << endl;

kembali 0;
}

Hasil eksekusi

Contoh : menghitung hasil kali dua bilangan bulat
Program ini menggunakan fungsi konversi string ke integer StrToInt() dari sini .

#termasuk
menggunakan namespace std;
int StrToInt(karakter*s) (…)
int main(int argc, char * argv) (

Int a = 0, b=0;

Jika (argc > 1)

a = StrToInt(argv);

Jika (argc > 2)

b = StrToInt(argv);

cout<< a <<«*» << b << «= « << a*b << endl;

kembali 0;
}

Program ini diluncurkan sebagai

Hasil eksekusi

Debugging Program dengan Argumen Baris Perintah

Untuk meneruskan argumen baris perintah saat men-debug program, Anda perlu mengakses menu Properti proyek.


Di tab Properti Konfigurasi -> Debug memilih Argumen perintah dan menetapkan nilai-nilai mereka.

Saat Anda menjalankan program dalam mode debug, argumen yang dimasukkan akan diperlakukan oleh program sebagai argumen baris perintah.


Terkadang saat memulai suatu program, berguna untuk menyampaikan beberapa informasi kepadanya. Biasanya, informasi ini diteruskan ke fungsi main() melalui argumen baris perintah. Argumen baris perintah adalah informasi yang dimasukkan pada baris perintah sistem operasi mengikuti nama program. Misalnya, untuk mulai mengkompilasi program, Anda perlu mengetik perintah berikut di baris perintah setelah prompt:

CC nama program

nama program adalah argumen baris perintah yang menentukan nama program yang akan Anda kompilasi.

Untuk menerima argumen baris perintah, dua argumen bawaan khusus digunakan: argc dan argv . Parameter argc berisi jumlah argumen pada baris perintah dan merupakan bilangan bulat, dan selalu minimal 1 karena argumen pertama adalah nama program. Dan parameter argv adalah pointer ke array pointer ke string. Dalam larik ini, setiap elemen menunjuk ke beberapa argumen baris perintah. Semua argumen baris perintah adalah string, jadi konversi angka apa pun ke format biner yang diinginkan harus disediakan dalam program saat dikembangkan.

Berikut adalah contoh sederhana menggunakan argumen baris perintah. Layar menampilkan kata Halo dan nama Anda, yang harus ditentukan sebagai argumen baris perintah.

#termasuk #termasuk int main(int argc, char *argv) ( if(argc!=2) ( printf("Anda lupa memasukkan nama Anda.\n"); exit(1); ) printf("Halo %s", argv) ; kembali 0;)

Jika Anda menamai program ini nama (nama) dan nama Anda Tom, maka untuk menjalankan program, masukkan nama Tom pada baris perintah. Sebagai hasil dari menjalankan program, pesan Halo, Tom akan muncul di layar.

Di banyak lingkungan, semua argumen baris perintah harus dipisahkan satu sama lain dengan spasi atau tab. Koma, titik koma, dan karakter serupa tidak dianggap sebagai pemisah. Misalnya,

Jalankan Spot, jalankan

terdiri dari tiga string karakter, while

Eric, Rick, Fred

adalah string karakter tunggal - koma umumnya tidak dianggap sebagai pembatas.

Jika string berisi spasi, maka di beberapa lingkungan string dapat diapit dengan tanda kutip ganda untuk mencegah pembuatan banyak argumen. Akibatnya, seluruh string akan dianggap sebagai satu argumen. Untuk mempelajari lebih lanjut tentang bagaimana opsi baris perintah diatur pada sistem operasi Anda, lihat dokumentasi untuk sistem tersebut.

Sangat penting untuk mendeklarasikan argv dengan benar. Inilah cara mereka paling sering melakukannya:

Char *argv;

Tanda kurung siku kosong menunjukkan bahwa larik memiliki panjang tak terbatas. Anda sekarang dapat mengakses argumen individu dengan mengindeks array argv. Misalnya, argv menunjuk ke string karakter pertama, yang selalu merupakan nama program; argv menunjuk ke argumen pertama, dan seterusnya.

Contoh kecil lain menggunakan argumen baris perintah adalah program hitung mundur di bawah ini. Program ini menghitung mundur dari beberapa nilai (ditentukan pada baris perintah) dan berbunyi bip saat mencapai 0. Perhatikan bahwa argumen pertama yang berisi nilai awal diubah menjadi nilai bilangan bulat menggunakan fungsi standar atoi () . Jika argumen kedua dari baris perintah (dan jika kita mengambil nama program sebagai argumen ketiga) adalah string "display" (output ke layar), maka hasil hitungan mundur (dalam urutan terbalik) akan ditampilkan di layar.

/* Program untuk menghitung mundur. */ #termasuk #termasuk #termasuk #termasuk int main(int argc, char *argv) ( int disp, hitung; jika(argc<2) { printf("В командной строке необходимо ввести число, с которого\n"); printf("начинается отсчет. Попробуйте снова.\n"); exit(1); } if(argc==3 && !strcmp(argv, "display")) disp = 1; else disp = 0; for(count=atoi(argv); count; --count) if(disp) printf("%d\n", count); putchar("\a"); /* здесь подается звуковой сигнал */ printf("Счет закончен"); return 0; }

Perhatikan bahwa jika argumen baris perintah tidak ditentukan, pesan kesalahan akan ditampilkan. Program dengan argumen baris perintah sering melakukan hal berikut: ketika pengguna menjalankan program ini tanpa memasukkan informasi yang diperlukan, instruksi ditampilkan tentang cara menentukan argumen dengan benar.

Untuk mengakses satu karakter di salah satu argumen baris perintah, masukkan indeks kedua ke dalam argv. Misalnya, program berikut mencetak karakter demi karakter semua argumen yang digunakan untuk memanggilnya:

#termasuk int main(int argc, char *argv) ( int t, i; for(t=0; t

Ingat, indeks pertama argv menyediakan akses ke string, dan indeks kedua menyediakan akses ke karakter individualnya.

Biasanya argc dan argv digunakan untuk meneruskan perintah awal ke program yang akan dibutuhkan saat dijalankan. Misalnya, argumen baris perintah sering menentukan informasi seperti nama file, opsi, atau perilaku alternatif. Menggunakan argumen baris perintah memberi program Anda "tampilan profesional" dan membuatnya lebih mudah digunakan dalam file batch.

Nama argc dan argv tradisional tetapi tidak wajib. Anda dapat menamai kedua parameter ini di fungsi main() sesuka Anda. Selain itu, beberapa kompiler mungkin mendukung -argumen tambahan untuk main(), jadi pastikan untuk memeriksa dokumentasi kompiler Anda.

Ketika sebuah program tidak memerlukan parameter baris perintah, yang paling umum adalah mendeklarasikan secara eksplisit fungsi main() agar tidak memiliki parameter. Dalam hal ini, kata kunci void digunakan dalam daftar parameter fungsi ini.

Borland C++ mendukung tiga argumen main(). Dua yang pertama adalah argc dan argv tradisional. Ini adalah satu-satunya argumen untuk fungsi main() yang ditentukan oleh standar ANSI C. Mereka mengizinkan argumen baris perintah diteruskan ke program. Argumen baris perintah adalah informasi yang mengikuti nama program pada baris perintah sistem operasi. Misalnya, ketika sebuah program dikompilasi dengan kompiler inline Borland, bcc biasanya diketik nama program

Di mana nama program adalah program yang akan dikompilasi. Nama program diteruskan ke kompiler sebagai argumen.

Parameter argc berisi jumlah argumen baris perintah dan merupakan bilangan bulat. Itu selalu minimal 1 karena nama program memenuhi syarat sebagai argumen pertama. Parameter argv adalah pointer ke array pointer karakter. Setiap elemen dari array ini menunjuk ke argumen baris perintah. Semua argumen baris perintah adalah string. Semua angka dikonversi oleh program ke dalam format internal. Program berikut mencetak "Halo" diikuti dengan nama pengguna jika diketik tepat setelah nama program:

#termasuk

{
jika(argc!=2)
{
printf("Anda lupa mengetikkan nama Anda\n");
kembali 1;
}
printf("Halo %s", argv);
kembali 0;
}

Jika Anda memanggil nama program ini, dan nama penggunanya adalah Sergey, maka untuk menjalankan program Anda harus mengetik:
nama Sergei.
Sebagai hasil dari program akan muncul:
Halo Sergei.

Argumen baris perintah harus dipisahkan oleh spasi atau tab. Koma, titik koma, dan karakter serupa tidak dianggap sebagai pemisah. Misalnya:

Terdiri dari tiga baris, sementara

Ramuan, Rick, Fred

Ini adalah satu baris - koma bukan pembatas.

Jika Anda ingin meneruskan string yang berisi spasi atau tab sebagai argumen tunggal, sertakan dalam tanda kutip ganda. Misalnya, ini adalah satu argumen:

"ini adalah sebuah ujian"

Penting untuk mendeklarasikan argv dengan benar. Metode yang paling khas adalah:

Tanda kurung kosong menunjukkan bahwa array tidak memiliki panjang tetap. Anda dapat mengakses elemen individual menggunakan pengindeksan argv. Misalnya, argv menunjuk ke baris pertama, yang selalu berisi nama program. argv menunjuk ke baris berikutnya, dan seterusnya.

Di bawah ini adalah contoh kecil penggunaan argumen baris perintah. Itu menghitung mundur dari nilai yang ditentukan pada baris perintah dan memancarkan sinyal ketika nol tercapai. Perhatikan bahwa argumen pertama berisi angka yang dikonversi menjadi bilangan bulat menggunakan fungsi atoi() standar. Jika string "tampilan" hadir sebagai argumen kedua, maka penghitung itu sendiri akan ditampilkan di layar.

/* program menghitung */

#termasuk
#termasuk
#termasuk
int main(int argc, char *argv)
{
int disp, hitung;
jika (argc<2)
{
printf("Anda harus memasukkan panjang hitungan\n");
printf("di baris perintah. Coba lagi.\n");
kembali 1;
}
if (argc==3 && !stcmp(argv,"tampilan")) disp = 1;
selain itu tampilan = 0;
untuk(hitung=atoi(argv); hitung; -hitung)
if (disp) printf("%d", hitung);
printf("%c", "\a"); /* pada kebanyakan komputer ini adalah panggilan */
kembali 0;
}

Perhatikan bahwa jika tidak ada argumen yang ditentukan, pesan kesalahan akan muncul. Ini adalah program yang paling umum yang menggunakan argumen baris perintah untuk mengeluarkan instruksi jika upaya dilakukan untuk menjalankan program tanpa informasi yang benar.

Untuk mengakses karakter baris perintah individual, tambahkan indeks kedua ke argv. Misalnya, program berikut mencetak semua argumen yang dipanggil, satu karakter pada satu waktu:

#termasuk
int main(int argc, char *argv)
{
int t, saya;
untuk(t=0; t {
saya = 0;
while(argv[t][i])
{
printf("%c", argv[t][i]);
}
printf(");
}
kembali 0;
}

Harus diingat bahwa indeks pertama untuk mengakses string, dan indeks kedua untuk mengakses karakter string.

Biasanya argc dan argv digunakan untuk mendapatkan perintah sumber. Secara teoritis, Anda dapat memiliki hingga 32767 argumen, tetapi sebagian besar sistem operasi bahkan tidak mengizinkan Anda mendekati itu. Biasanya, argumen ini digunakan untuk menentukan nama file atau opsi. Menggunakan argumen baris perintah memberi program tampilan profesional dan memungkinkan program digunakan dalam file batch.

Jika Anda menyertakan file WILDARGS.OBJ yang disertakan dengan Borland C++, Anda dapat menggunakan wildcard dalam argumen tipe *.EXE. (Borland C++ menangani pola secara otomatis dan menambahkan argc sesuai.) Misalnya, jika Anda menyambungkan WILDARGS.OBJ ke program berikut, ini akan mencetak berapa banyak file yang cocok dengan nama file yang ditentukan pada baris perintah:

/* Hubungkan program ini dengan WILDARGS.OBJ */

#termasuk
int main(int argc, char *argv)
{
daftar int i;
printf("%d file cocok dengan nama yang ditentukan\n", argc-1);
printf("Mereka adalah : ");
untuk(i=1; i printf("%s", argv[i]);
kembali 0;
}

Jika kita menyebut program ini WA, lalu jalankan sebagai berikut, kita mendapatkan jumlah file yang memiliki ekstensi EXE, dan daftar nama file-file ini:

Selain argc dan argv, Borland C++ juga menyediakan argumen baris perintah ketiga -env. Parameter env memungkinkan program untuk mengakses informasi tentang lingkungan sistem operasi. Parameter env harus mengikuti argc dan argv dan dideklarasikan seperti ini:

Seperti yang Anda lihat, env dideklarasikan dengan cara yang sama seperti argv. Sama seperti argv, ini adalah pointer ke array string. Setiap baris adalah string lingkungan seperti yang didefinisikan oleh sistem operasi. Parameter env tidak memiliki padanan dari parameter argc, yang menunjukkan berapa banyak garis lingkungan yang ada. Sebaliknya, baris terakhir dari lingkungan adalah nol. Program berikut mencetak semua string lingkungan yang saat ini ditentukan dalam sistem operasi:

/* program ini mencetak semua garis lingkungan */

#termasuk
int main(int argc, char *argv, char *env)
{
int t;
untuk(t=0; env[t]/ t++)
printf("%s\n", env[t]);
kembali 0;
}

Perhatikan bahwa meskipun argc dan argv tidak digunakan oleh program, keduanya harus ada dalam daftar parameter. C tidak tahu nama parameternya. Sebaliknya, penggunaannya ditentukan oleh urutan parameter yang dideklarasikan. Bahkan, Anda dapat memanggil parameter apa pun yang Anda suka. Karena argc, argv, dan env adalah nama tradisional, yang terbaik adalah tetap menggunakannya sehingga siapa pun yang membaca program dapat langsung mengenali bahwa ini adalah argumen untuk fungsi main().

Untuk program, tugas tipikal adalah menemukan nilai yang ditentukan dalam string lingkungan. Misalnya, isi string PATH memungkinkan program menggunakan jalur pencarian. Program berikut mendemonstrasikan cara menemukan string yang mendeklarasikan jalur pencarian standar. Ia menggunakan fungsi perpustakaan standar strstr(), yang memiliki prototipe berikut:

Char *strstr(const char *str1, const char *str2);

Fungsi strstr() mencari string yang ditunjuk oleh str1 dalam string yang ditunjuk oleh str2. Jika string seperti itu ditemukan, maka pointer ke posisi pertama dikembalikan. Jika tidak ditemukan kecocokan, fungsi mengembalikan NULL.

/* program mencari string lingkungan untuk string yang berisi PATH */

#termasuk
#termasuk
int utama (int argc, char *argv, char *env)
{
int t;
untuk(t=0; env[t]; t++)
{
jika(strstr(env[t], "PATH"))
printf("%s\n", env[t]);
}
kembali 0;
}



Memuat...
Atas