[Powered by Google Translate] [Command-Line Hujah]
[Christopher Bartholomew - Universiti Harvard]
[Ini adalah CS50 - CS50.TV]
Satu ciri yang berguna untuk program adalah untuk menerima input pengguna.
Setakat ini, kita telah diterokai beberapa fungsi dalam perpustakaan CS50
untuk menerima input pengguna, seperti "mendapatkan tali,"
yang meminta pengguna, manakala permohonan itu sedang berjalan, untuk rentetan.
>> Walau bagaimanapun, terdapat kes-kes di mana anda mahu untuk menyediakan input program anda
sebelum ia sebenarnya berjalan.
Cara ini, anda tidak perlu untuk meminta maklumat tambahan daripada pengguna anda
semasa melaksanakan satu tugas yang mudah.
Mengambil, sebagai contoh, mv atau perintah bergerak dalam UNIX.
Arahan ini membolehkan pengguna untuk memindahkan fail dari satu lokasi ke lokasi yang lain.
Menurut halaman manual, mv menerima dua hujah baris arahan:
fail yang sedang bergerak dan lokasi fail sedang berpindah ke.
Jadi, contoh ini mempunyai arahan dengan dua hujah.
Jadi bagaimana kita memberitahu program C kami untuk menggunakan hujah-hujah baris arahan?
>> Nah, ternyata bahawa utama, yang kita gunakan dalam semua program C, mempunyai rahsia.
Main menerima dua parameter: argc dan argv.
Mari kita pergi lebih syarat-syarat ini.
>> Parameter pertama, argc, yang bermaksud kiraan hujah,
mempunyai jenis data integer.
Parameter argc mengandungi beberapa hujah, termasuk arahan.
Dalam arahan langkah kita, walaupun kita hanya mempunyai dua hujah yang dipaparkan,
nilai argc akan 3.
Parameter kedua, argv, yang bermaksud hujah vektor,
adalah pelbagai petunjuk char yang menunjukkan rentetan.
>> Ini bermakna bahawa setiap elemen di argv, bermula dari sifar,
mengandungi arahan dan hujah.
Sebagai contoh, argv [0], yang saya akan rujuk sebagai argv sifar,
akan sentiasa mengandungi arahan yang sedang berjalan -
dalam kes ini, mv.
argv [1] akan mengandungi hujah pertama, file.txt,
dan argv [2] akan mengandungi hujah kedua, ~ / cs50 /.
Hujah terakhir argv sentiasa akan batal.
Jadi mari kita melaksanakan ini hujah baris arahan.
Dalam latihan sebelumnya, kita diletakkan tidak sah, bermakna apa-apa, sebagai parameter utama.
Walau bagaimanapun, dalam usaha untuk kita menggunakan hujah baris arahan,
kita perlu membuang dalam terbatal dan tempat utama int argc, char * argv [].
Sekarang, untuk mengakses keseluruhan elemen dari argv, yang hujah-hujah anda,
anda hanya boleh melelar, atau gelung, melalui pelbagai seperti ini.
Jadi, di dalam badan utama, kita akan pergi ke hadapan dan taip untuk gelung:
(int i = 0; i <argc; i + +).
>> Kita tidak perlu bersedia kerinting di sini kerana kita hanya melaksanakan satu baris kod
dalam badan gelung ini.
Kami akan pergi ke hadapan dan memukul tab sekali,
kemudian taipkan printf ("argv [% d], untuk mewakili nilai integer,
% s, tali, maka aksara baris baru.
Kemudian kami menyediakan printf i bagi lelaran semasa gelung
dan argv [i] untuk perwakilan rentetan hujah baris arahan semasa.
Apabila kita berjalan dengan dua hujah, kita akan melihat hujah-hujah yang dipaparkan di terminal.
Sebelum ini kita berkata bahawa argv mengadakan pelbagai petunjuk char.
>> Jadi, jika ini berlaku, bagaimana kita kemudian mengakses watak individu dalam hujah masing-masing?
Sebagai contoh, apakah jika saya mahu mencari watak tertentu dalam hujah pertama?
Nah, jawapannya ialah bahawa kita perlu memohon gelung bersarang
yang kemudiannya akan melelar melalui setiap unsur dalam rentetan hujah.
Ini adalah bagaimana anda melakukannya.
>> Pertama, kita pergi untuk membuat salinan example2.c.
Kemudian, di dalam pertama untuk gelung,
kita akan menambah tambahan untuk gelung.
Jadi untuk (int j = 0, n = strlen (argv [i]),
yang kemudian memberikan kita panjang hujah semasa,
; J <n; j + +)
Kami akan mencetak lokasi setiap aksara
dalam hujah semasa dengan menggunakan printf.
Jadi, printf ("argv [% d], untuk mewakili indeks hujah semasa,
maka [% d] sekali lagi, untuk mewakili watak semasa hujah semasa,
: c%, untuk watak semasa dalam hujah.
Akhir sekali, kami menyediakan printf dengan indeks gelung luar, i,
maka indeks bagi gelung dalaman.
>> Dan hujah terakhir kami untuk printf adalah watak sebenar dari hujah disediakan
pada baris arahan.
Sekarang, kerana saya menggunakan fungsi tali strlen untuk mendapatkan panjang rentetan,
Saya juga mesti menambah perpustakaan string.h ke atas termasuk kami.
Jadi, untuk berbuat demikian, kita akan pergi ke atas, dan hanya di bawah stdio.h, kita akan lakukan
# Include .
>> Jadi, mari kita menyusun dan menjalankan dan memberikan ia satu hujah yang sebenar.
>> Dan, seperti yang kita boleh lihat, kita kini mempunyai lokasi sebenar char setiap individu dalam hujah.
Jadi itulah ia. Saya Christopher Bartholomew; ini adalah CS50.
[CS50.TV]