pembangunan bahagian belakang
C++
Bagaimana untuk membaca hujah baris arahan dalam C ? (argc, tutorial argv)
Bagaimana untuk membaca hujah baris arahan dalam C ? (argc, tutorial argv)
Fungsi utama dalam C menerima parameter baris arahan melalui argc dan argv: argc ialah bilangan parameter (sekurang-kurangnya 1, termasuk nama program), argv ialah tatasusunan penunjuk yang menunjuk kepada setiap rentetan parameter, argv[argc] ialah penunjuk nol dan argc mesti diperiksa sebelum mengakses untuk mengelakkan di luar sempadan.

Dalam C , argumen baris perintah dihantar ke fungsi main melalui dua parameter: argc (kiraan hujah) dan argv (vektor hujah). argc ialah integer yang memberitahu anda bilangan argumen yang dibekalkan, termasuk nama program. argv ialah tatasusunan rentetan gaya C ( char* ) yang menunjuk kepada setiap hujah.
Memahami argc dan argv
argc sentiasa sekurang-kurangnya 1 — kerana argv[0] memegang nama atau laluan program (seperti yang dipanggil). Setiap elemen berikutnya ( argv[1] , argv[2] , dsb.) sepadan dengan hujah yang ditaip selepas nama program. Tatasusunan berakhir dengan penuding nol ( argv[argc] == nullptr ), jadi selamat untuk gelung dari 0 kepada argc - 1 .
-
./myapp hello world→argc = 3,argv[0] = "./myapp",argv[1] = "hello",argv[2] = "world" -
./myapp -v --input=file.txt→argc = 4; tiada penghuraian automatik — anda mengendalikan pemisahan dan makna
Akses asas dan pemeriksaan keselamatan
Sentiasa semak argc sebelum mengakses argv[i] untuk mengelakkan tingkah laku yang tidak ditentukan. Contohnya, jika program anda menjangkakan sekurang-kurangnya satu hujah yang disediakan pengguna, sahkan argc > 1 .
- Gunakan
if (argc \n"; return 1; } - Tukar
argv[i]kepadastd::stringuntuk manipulasi yang lebih mudah:std::string arg(argv[1]); - Ingat: elemen
argvialah rentetan C yang ditamatkan nol — selamat untuk dihantar ke fungsi perpustakaan C sepertistrcmpatauatoi, tetapi lebih suka alternatif C (std::stoi,std::string::compare) apabila boleh
Corak penghuraian hujah mudah
Untuk penggunaan asas berasaskan bendera (cth, -h , --help , -o output.txt ), lelaran melalui argv bermula pada indeks 1 dan periksa setiap rentetan:
- Semak
argv[i][0] == '-'untuk mengesan bendera - Mengendalikan pilihan pendek seperti
-v(argv[i][1] == 'v') dan pilihan panjang seperti--verbosemenggunakanstd::string(argv[i]).compare("--verbose") == 0 - Jika bendera menjangkakan nilai (cth,
-o file.txt), pastikani 1 sebelum membaca <code>argv[i 1]
Alternatif moden (C 17 dan seterusnya)
Walaupun argc/argv kekal standard, pertimbangkan untuk membungkusnya untuk kejelasan dan keselamatan:
- Buat
std::vector<:string></:string>daripadaargv:std::vector<:string> args(argv, argv argc);</:string> - Gunakan perpustakaan seperti Poco , argparse , atau argh untuk penghuraian deklaratif yang mantap
- Untuk kes mudah, gelung berstruktur dengan berasaskan julat
forlebih vektor lebih mudah dibaca daripada aritmetik penunjuk mentah
Atas ialah kandungan terperinci Bagaimana untuk membaca hujah baris arahan dalam C ? (argc, tutorial argv). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak
Artikel Panas
Alat popular
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)




