Membangun Alat CLI
Contoh praktis.
Membangun Alat CLI adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.
Menggabungkan semuanya
Sekarang kita menggabungkan argumen, opsi, dan penguraian menjadi alat CLI yang kecil tetapi lengkap.
Contoh kita adalah utilitas pemformatan angka yang membaca suatu nilai dan beberapa opsi, lalu mencetak hasilnya.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <number>\n", argv[0]);
return 1;
}
printf("You passed: %s\n", argv[1]);
return 0;
}Merancang antarmuka
Alat CLI yang baik menentukan antarmukanya sejak awal. Alat kita akan menerima:
-vkeluaran terperinci-r Nmengulangi keluaran sebanyak N kali- satu argumen posisi: teks yang akan dicetak
#include <stdio.h>
int main(void) {
printf("Interface: prog [-v] [-r N] <text>\n");
return 0;
}Mendeklarasikan pengaturan
Simpan setiap perilaku yang dapat dikonfigurasi dalam variabel dengan nilai bawaan yang masuk akal. Dengan begitu, penguraian tetap terpisah dari pekerjaan sebenarnya.
#include <stdio.h>
int main(void) {
int verbose = 0;
int repeat = 1;
const char *text = NULL;
printf("defaults: verbose=%d repeat=%d\n", verbose, repeat);
return 0;
}Menguraikan dengan getopt
Gunakan getopt untuk mengisi bendera. -r menerima nilai, sehingga entri string opsinya adalah r:.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int verbose = 0, repeat = 1, opt;
while ((opt = getopt(argc, argv, "vr:")) != -1) {
if (opt == 'v') verbose = 1;
else if (opt == 'r') repeat = atoi(optarg);
}
printf("verbose=%d repeat=%d\n", verbose, repeat);
return 0;
}Membaca argumen posisi
Setelah getopt, optind menunjuk ke argumen non-opsi pertama. Kita mengambil teks dari sana.
Jika tidak ada, kita mencetak petunjuk penggunaan dan keluar dengan kode kesalahan.
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
while (getopt(argc, argv, "vr:") != -1) { }
if (optind >= argc) {
printf("Error: missing text argument\n");
return 1;
}
printf("text = %s\n", argv[optind]);
return 0;
}Memvalidasi masukan numerik
Alat yang andal memeriksa apakah -r menerima angka yang masuk akal. Tolak jumlah pengulangan nol atau negatif.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int repeat = 1, opt;
while ((opt = getopt(argc, argv, "r:")) != -1) {
if (opt == 'r') repeat = atoi(optarg);
}
if (repeat < 1) {
printf("Error: repeat must be >= 1\n");
return 1;
}
printf("repeat = %d\n", repeat);
return 0;
}Melakukan pekerjaan
Setelah pengaturan diuraikan dan divalidasi, lakukan tugas sebenarnya. Di sini kita mencetak teks sebanyak repeat kali.
#include <stdio.h>
int main(void) {
const char *text = "hello";
int repeat = 3;
for (int i = 0; i < repeat; i++) {
printf("%s\n", text);
}
return 0;
}Keluaran terperinci
Bendera terperinci dapat menambahkan informasi diagnostik. Lindungi pencetakan tersebut dengan bendera agar keluaran normal tetap bersih.
#include <stdio.h>
int main(void) {
int verbose = 1;
const char *text = "hi";
if (verbose) printf("[debug] about to print text\n");
printf("%s\n", text);
return 0;
}Alat lengkap
Berikut program lengkap yang menyatukan semua bagian: menguraikan, memvalidasi, lalu menjalankan.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int verbose = 0, repeat = 1, opt;
while ((opt = getopt(argc, argv, "vr:")) != -1) {
if (opt == 'v') verbose = 1;
else if (opt == 'r') repeat = atoi(optarg);
}
if (optind >= argc) { printf("Usage: prog [-v] [-r N] <text>\n"); return 1; }
const char *text = argv[optind];
if (verbose) printf("[debug] repeat=%d\n", repeat);
for (int i = 0; i < repeat; i++) printf("%s\n", text);
return 0;
}Kode keluar itu penting
Alat CLI menyampaikan keberhasilan melalui kode keluarnya. Kembalikan 0 jika berhasil dan nilai bukan nol jika terjadi kesalahan.
Skrip dan program lain mengandalkan hal ini untuk menentukan tindakan berikutnya.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("failure\n");
return 2;
}
printf("success\n");
return 0;
}Menulis kesalahan ke stderr
Menurut konvensi, keluaran normal dikirim ke stdout dan kesalahan dikirim ke stderr melalui fprintf(stderr, ...).
Dengan demikian, pengguna dapat memisahkan hasil dari diagnostik saat mengalihkan keluaran.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Error: need an argument\n");
return 1;
}
printf("%s\n", argv[1]);
return 0;
}Pemeriksaan Cepat
Uji pemahaman Anda tentang konvensi alat CLI.
Rangkuman
Anda telah membuat alat CLI yang lengkap:
- Tentukan antarmuka dan deklarasikan pengaturan dengan nilai bawaan.
- Uraikan bendera dengan
getopt; baca argumen posisi darioptind. - Validasikan masukan sebelum melakukan pekerjaan.
- Kembalikan kode keluar yang bermakna dan kirim kesalahan ke
stderr.
Belajar C dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 39
- Pelajaran
- 144
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membangun Alat CLI” gratis?
Ya — teks lengkap “Membangun Alat CLI” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membangun Alat CLI”?
Contoh praktis. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C Academy?
Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Membangun Alat CLI” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?
Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- argc dan argv
- Parsing Opsi
- getopt
- Membangun Alat CLI