C Academy · Pelajaran

Membangun Alat CLI

Contoh praktis.

Pelajaran 4 dari 413 langkah

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:

  • -v keluaran terperinci
  • -r N mengulangi 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 dari optind.
  • Validasikan masukan sebelum melakukan pekerjaan.
  • Kembalikan kode keluar yang bermakna dan kirim kesalahan ke stderr.
Gratis untuk memulai

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

  1. argc dan argv
  2. Parsing Opsi
  3. getopt
  4. Membangun Alat CLI
← Kembali ke C Academy