Panduan Lengkap Input String di Bahasa C: Cara Aman untuk Pemula hingga Lanjutan

目次

1. Pendahuluan

Bahasa C adalah bahasa yang sangat penting untuk dipelajari dalam memahami dasar-dasar pemrograman. Salah satu fitur yang tidak dapat diabaikan adalah “input string”, yang digunakan untuk menerima informasi dari pengguna. Artikel ini akan menjelaskan secara detail cara melakukan input string dalam bahasa C, serta memperkenalkan teknik dan perhatian khusus agar dapat digunakan dengan aman.

Terutama bagi pemula, seringkali membingungkan ketika menghadapi error atau risiko keamanan saat memproses string yang diinput. Oleh karena itu, artikel ini mencakup mulai dari fungsi dasar hingga contoh kode lanjutan, dengan tujuan membekali Anda dengan keterampilan praktis.

Jika Anda memahami cara kerja input string dalam bahasa C dan dapat mengimplementasikannya dengan aman, itu akan menjadi langkah awal menuju pembuatan program yang lebih kompleks. Mari kita masuk ke pembahasan secara rinci.

2. Apa itu Input String dalam C? Penjelasan Konsep Dasar

Apa itu String?

Dalam bahasa C, string direpresentasikan sebagai array karakter. Setiap string selalu diakhiri dengan karakter terminator “\0“, yang menandakan akhir dari string. Dengan adanya terminator ini, bahasa C dapat menangani string tanpa harus menentukan panjangnya secara eksplisit.

Hubungan antara String dan Array

Dalam C, string pada dasarnya adalah array dari tipe karakter (char). Misalnya, Anda dapat mendeklarasikan string seperti berikut:

char str[10];  // Buffer untuk menyimpan string hingga 10 karakter

Dalam contoh ini, memori disediakan untuk menyimpan string maksimal 10 karakter. Namun, 1 karakter digunakan untuk terminator “\0“, sehingga jumlah karakter yang dapat disimpan sebenarnya adalah 9.

Contoh Literal String

Literal string adalah teks yang ditulis di dalam tanda kutip ganda (” “). Contoh berikut menunjukkan penggunaan literal string:

char greeting[] = "Hello";

Dalam hal ini, greeting secara otomatis diperlakukan sebagai array berukuran 6 (5 huruf “Hello” + 1 terminator “\0“).

Mengapa Input String Diperlukan?

Dalam banyak program, sering kali diperlukan input dari pengguna. Contohnya adalah saat mendaftarkan nama atau alamat, atau memasukkan kata kunci pencarian. Input string sangat penting dalam antarmuka aplikasi. Karena itu, memahami cara menangani string dengan aman dan efisien adalah keterampilan penting.

年収訴求

3. Fungsi Dasar untuk Input String dan Contoh Penggunaannya

3-1. Fungsi scanf

Cara Dasar Menggunakan scanf

Fungsi scanf digunakan untuk mengambil data dari input standar (keyboard). Untuk memasukkan string, digunakan format spesifier %s.

Contoh kode:

#include <stdio.h>

int main() {
    char str[50];  // Buffer untuk menyimpan string hingga 50 karakter
    printf("Masukkan sebuah string: ");
    scanf("%s", str);  // Ambil string dari input standar
    printf("String yang dimasukkan: %s\n", str);
    return 0;
}

Program ini menerima string yang dimasukkan oleh pengguna dan menampilkannya di layar.

Peringatan dalam Penggunaan scanf

  1. Tidak dapat memproses spasi:
    Fungsi scanf menganggap spasi, tab, dan enter sebagai pemisah. Akibatnya, string yang mengandung spasi akan terpotong.

Contoh:
Input:

Hello World

Output:

Hello
  1. Risiko buffer overflow:
    Jika string yang dimasukkan melebihi kapasitas buffer, memori dapat rusak. Hal ini bisa menyebabkan crash atau kerentanan keamanan.

Solusi:
Disarankan menggunakan fungsi yang lebih aman (seperti fgets, dibahas di bawah).

3-2. Fungsi fgets

Cara Dasar Menggunakan fgets

Fungsi fgets memungkinkan input string dengan batas jumlah karakter tertentu secara aman. Fungsi ini juga menyertakan karakter newline, sehingga risiko buffer overflow dapat dihindari.

Contoh kode:

#include <stdio.h>

int main() {
    char str[50];  // Buffer hingga 50 karakter
    printf("Masukkan sebuah string: ");
    fgets(str, sizeof(str), stdin);  // Input string dengan aman
    printf("String yang dimasukkan: %s", str);
    return 0;
}

Program ini dapat menerima string hingga 50 karakter dengan aman dan menampilkannya kembali.

Kelebihan fgets

  1. Mencegah buffer overflow: Panjang input dibatasi sesuai ukuran buffer.
  2. Dapat memproses string dengan spasi: Termasuk spasi dan tab dalam input.

Keterbatasan fgets

  1. Karakter newline ikut tersimpan: Sehingga bisa menghasilkan baris kosong tambahan saat ditampilkan.

Contoh menghapus newline:

str[strcspn(str, "\n")] = '\0';
  1. Sisa data di buffer input: Setelah menggunakan fgets, mungkin ada data tersisa di buffer. Untuk mengatasinya bisa menggunakan fflush(stdin) atau getchar().

3-3. Mana yang Sebaiknya Digunakan?

Nama FungsiKegunaanPeringatan
scanfInput string sederhana (tanpa spasi, pendek)Harus hati-hati dengan spasi dan buffer overflow
fgetsAman, cocok untuk input dengan spasiPerlu menghapus newline dan membersihkan buffer

Untuk pemula maupun aplikasi praktis, disarankan menggunakan fgets karena lebih aman.

4. Teknik Praktis untuk Input String yang Aman

4-1. Pencegahan Buffer Overflow

Apa itu Buffer Overflow?

Buffer overflow adalah masalah ketika data yang dimasukkan melebihi kapasitas memori (buffer) yang telah disediakan, sehingga data tertulis ke area memori lain. Hal ini bisa menyebabkan program crash atau menimbulkan celah keamanan.

Contoh:
Kode berikut adalah contoh penggunaan yang berbahaya:

char str[10];
scanf("%s", str);  // Tidak ada batasan ukuran input

Jika pengguna memasukkan lebih dari 10 karakter, maka akan terjadi buffer overflow.

Solusi 1: Gunakan fgets

Fungsi fgets memungkinkan input dengan panjang terbatas sesuai buffer, sehingga lebih aman.

Contoh kode yang aman:

#include <stdio.h>
#include <string.h>

int main() {
    char str[10];
    printf("Masukkan string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';  // Hapus karakter newline
    printf("String yang dimasukkan: %s\n", str);
    return 0;
}

Dalam contoh ini, input dibatasi 10 karakter dan newline ditangani dengan benar.

Solusi 2: Validasi Panjang Input

Jika input terlalu panjang, tampilkan peringatan atau hentikan proses.

Contoh:

#include <stdio.h>
#include <string.h>

int main() {
    char str[10];
    printf("Masukkan string (maksimal 9 karakter): ");
    fgets(str, sizeof(str), stdin);
    if (strlen(str) >= sizeof(str) - 1 && str[strlen(str) - 1] != '\n') {
        printf("Input terlalu panjang.\n");
        return 1;  // Keluar dengan error
    }
    str[strcspn(str, "\n")] = '\0';  // Hapus newline
    printf("String yang dimasukkan: %s\n", str);
    return 0;
}

4-2. Implementasi Penanganan Error

Pentingnya Penanganan Error

Penanganan error sangat penting untuk meningkatkan ketahanan program. Saat menerima input dari pengguna, kita perlu menangani data yang tidak valid atau tidak terduga.

Solusi 1: Mekanisme Ulangi Input (Retry)

Jika pengguna memasukkan data yang tidak valid, program meminta input ulang.

Contoh:

#include <stdio.h>
#include <string.h>

int main() {
    char str[10];
    int valid = 0;

    while (!valid) {
        printf("Masukkan string (maksimal 9 karakter): ");
        fgets(str, sizeof(str), stdin);

        if (strlen(str) >= sizeof(str) - 1 && str[strlen(str) - 1] != '\n') {
            printf("Input terlalu panjang. Coba lagi.\n");
            while (getchar() != '\n');  // Bersihkan buffer
        } else {
            str[strcspn(str, "\n")] = '\0';
            valid = 1;  // Input valid
        }
    }

    printf("String yang dimasukkan: %s\n", str);
    return 0;
}

Solusi 2: Filterisasi Input

Terapkan aturan tertentu pada input, misalnya hanya menerima alfanumerik.

Contoh:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int isValidInput(const char *str) {
    for (int i = 0; str[i] != '\0'; i++) {
        if (!isalnum(str[i])) {  // Hanya izinkan alfanumerik
            return 0;
        }
    }
    return 1;
}

int main() {
    char str[50];
    printf("Masukkan hanya karakter alfanumerik: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';

    if (isValidInput(str)) {
        printf("Input valid: %s\n", str);
    } else {
        printf("Input tidak valid.\n");
    }

    return 0;
}

Program ini hanya menerima huruf dan angka, menolak simbol atau karakter khusus lainnya.

5. Fungsi yang Tidak Disarankan dan Alternatifnya

5-1. Bahaya Fungsi gets

Apa itu fungsi gets?

Fungsi gets digunakan untuk membaca string dari input pengguna. Contoh penggunaannya adalah sebagai berikut:

Contoh kode:

char str[50];
gets(str);  // Membaca string dari input standar

Sekilas fungsi ini terlihat sederhana, namun memiliki masalah serius.

Masalah dengan fungsi gets

  1. Risiko buffer overflow:
    Fungsi gets tidak memiliki batas panjang input. Jika pengguna memasukkan string lebih panjang dari buffer, memori akan rusak dan dapat menimbulkan celah keamanan.

Contoh:

char str[10];
gets(str);  // Tidak ada batas ukuran input

Jika pengguna memasukkan 20 karakter, memori akan rusak dan program bisa crash.

  1. Risiko keamanan:
    Buffer overflow bisa dimanfaatkan untuk melakukan serangan (buffer overflow attack), sehingga sistem dapat diretas.
  2. Dihapus dari standar:
    Fungsi ini dinyatakan usang sejak standar C99 dan dihapus dalam C11. Banyak kompiler modern akan memberi peringatan atau error jika digunakan.

5-2. Fungsi Alternatif yang Aman

Menggunakan fgets

Sebagai pengganti gets, gunakan fgets untuk menghindari buffer overflow.

Contoh kode aman:

#include <stdio.h>
#include <string.h>

int main() {
    char str[50];
    printf("Masukkan string: ");
    fgets(str, sizeof(str), stdin);  // Input string dengan aman
    str[strcspn(str, "\n")] = '\0';  // Hapus karakter newline
    printf("String yang dimasukkan: %s\n", str);
    return 0;
}

Perbandingan dengan scanf

Fungsi scanf juga dapat digunakan untuk input string, tetapi tidak bisa memproses spasi. Jika Anda perlu menangani string kompleks atau mengutamakan keamanan, fgets lebih direkomendasikan.

Menggunakan getline

Selain itu, ada fungsi getline (tersedia di sistem POSIX). Fungsi ini secara dinamis mengalokasikan memori sehingga tidak perlu khawatir tentang ukuran buffer.

Contoh kode:

#include <stdio.h>
#include <stdlib.h>

int main() {
    char *line = NULL;
    size_t len = 0;
    ssize_t read;

    printf("Masukkan string: ");
    read = getline(&line, &len, stdin);  // Alokasi memori dinamis untuk input

    if (read != -1) {
        printf("String yang dimasukkan: %s", line);
    }

    free(line);  // Bebaskan memori
    return 0;
}

Pentingnya Menghindari Fungsi Usang

Dalam C, beberapa fungsi lama sudah tidak disarankan karena alasan keamanan. Terutama saat menangani input dari luar, risiko keamanan sangat tinggi. Oleh karena itu, migrasi ke fungsi alternatif yang lebih aman adalah hal wajib.

Fungsi UsangAlternatifKegunaan & Keuntungan
getsfgetsAman, mendukung input string dengan panjang terbatas.
getsgetlineMendukung alokasi memori dinamis, cocok untuk input string panjang.
scanf("%s")fgetsDapat menangani string dengan spasi secara aman.

6. Contoh Praktis dan Penerapan Lanjutan | Input & Pemrosesan String Multi-Baris

6-1. Menerima Input String Multi-Baris

Gambaran Umum Input Multi-Baris

Dalam beberapa program, pengguna diminta untuk memasukkan lebih dari satu baris string sekaligus. Misalnya, pada aplikasi catatan (notepad), input multi-baris adalah fitur penting.

Contoh 1: Program untuk Membaca 3 Baris Input

#include <stdio.h>
#include <string.h>

#define MAX_LINES 3     // Jumlah baris input
#define MAX_LENGTH 100  // Maksimal karakter per baris

int main() {
    char lines[MAX_LINES][MAX_LENGTH];  // Array 2D untuk menyimpan string

    printf("Masukkan %d baris string:\n", MAX_LINES);

    for (int i = 0; i < MAX_LINES; i++) {
        printf("Baris %d: ", i + 1);
        fgets(lines[i], sizeof(lines[i]), stdin);
        lines[i][strcspn(lines[i], "\n")] = '\0';  // Hapus newline
    }

    printf("\nString yang dimasukkan:\n");
    for (int i = 0; i < MAX_LINES; i++) {
        printf("Baris %d: %s\n", i + 1, lines[i]);
    }

    return 0;
}

Penjelasan:

  1. Menggunakan array 2D: Setiap baris disimpan di array terpisah.
  2. Input dengan fgets: Membatasi jumlah karakter dan menghapus newline.
  3. Pemrosesan dengan loop for: Memudahkan pengambilan input berulang.

Contoh hasil eksekusi:

Masukkan 3 baris string:
Baris 1: Hello
Baris 2: World
Baris 3: C Language

String yang dimasukkan:
Baris 1: Hello
Baris 2: World
Baris 3: C Language

6-2. Pemrosesan String dengan Spasi dan Karakter Khusus

Contoh Input dengan Spasi

Untuk menangani string yang berisi spasi secara aman, gunakan fgets.

Contoh 2: Program yang Memproses Input dengan Spasi

#include <stdio.h>
#include <string.h>

int main() {
    char str[100];  // Buffer hingga 100 karakter

    printf("Masukkan sebuah kalimat: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';  // Hapus newline

    printf("Kalimat yang dimasukkan: %s\n", str);
    return 0;
}

Poin penting:

  • Dapat menangani spasi dan tab dengan aman.
  • Penghapusan newline mencegah baris kosong tambahan.

Contoh hasil:

Masukkan sebuah kalimat: Hello World with spaces
Kalimat yang dimasukkan: Hello World with spaces

6-3. Menangani Karakter Khusus & Escape Sequence

Contoh Input dengan Karakter Khusus

Dalam C, kita juga perlu menangani input dengan karakter khusus atau escape sequence.

Contoh 3: Program untuk Mendeteksi Karakter Khusus

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char str[100];
    int specialCharCount = 0;

    printf("Masukkan string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';

    for (int i = 0; str[i] != '\0'; i++) {
        if (!isalnum(str[i]) && !isspace(str[i])) {  // Deteksi non-alfanumerik
            specialCharCount++;
        }
    }

    printf("Jumlah karakter khusus: %d\n", specialCharCount);
    return 0;
}

Poin penting:

  • isalnum → cek apakah karakter alfanumerik.
  • isspace → cek apakah karakter spasi/tab.
  • Selain itu dianggap karakter khusus.

Contoh hasil:

Masukkan string: Hello, World! 123
Jumlah karakter khusus: 2

6-4. Contoh Aplikasi: Program Catatan Sederhana

Sebagai penerapan lanjutan, berikut contoh program catatan sederhana yang menerima input multi-baris lalu menyimpannya ke file.

Contoh 4: Program Catatan

#include <stdio.h>
#include <string.h>

#define MAX_LINES 5
#define MAX_LENGTH 100

int main() {
    char lines[MAX_LINES][MAX_LENGTH];

    printf("Anda dapat menulis hingga %d baris catatan.\n", MAX_LINES);
    for (int i = 0; i < MAX_LINES; i++) {
        printf("Baris %d: ", i + 1);
        fgets(lines[i], sizeof(lines[i]), stdin);
        lines[i][strcspn(lines[i], "\n")] = '\0';
    }

    FILE *file = fopen("memo.txt", "w");
    if (file == NULL) {
        printf("Gagal membuka file.\n");
        return 1;
    }

    for (int i = 0; i < MAX_LINES; i++) {
        fprintf(file, "%s\n", lines[i]);
    }

    fclose(file);
    printf("Catatan berhasil disimpan.\n");
    return 0;
}

Poin penting:

  • Menyimpan input pengguna ke dalam file.
  • Contoh penerapan dasar file handling di C.

7. Pertanyaan yang Sering Diajukan (Format Q&A)

Q1: Mengapa fungsi gets sebaiknya tidak digunakan?

A:
Fungsi gets membaca string tanpa membatasi panjang input, sehingga sangat berisiko menyebabkan buffer overflow. Kerentanan ini bisa dimanfaatkan untuk serangan keamanan. Karena itu, fungsi ini dihapus sejak standar C11. Sebagai gantinya, gunakan fgets yang lebih aman.

Contoh kode pengganti aman:

char str[50];
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0';  // Hapus newline

Q2: Mengapa fungsi scanf tidak bisa membaca input dengan spasi?

A:
Secara default, scanf menganggap spasi, tab, dan newline sebagai pemisah. Karena itu, string dengan spasi tidak bisa diproses dengan benar.

Contoh:
Input:

Hello World

Output:

Hello

Solusi:
Gunakan fgets untuk membaca string dengan spasi.

char str[100];
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0';
printf("String yang dimasukkan: %s\n", str);

Q3: Bagaimana jika input lebih panjang dari ukuran buffer saat menggunakan fgets?

A:
fgets hanya membaca sesuai ukuran buffer. Jika input terlalu panjang, sisanya akan terpotong.

Solusi:

  1. Tampilkan pesan error atau minta pengguna mengulangi input.
  2. Gunakan getline (di sistem POSIX) untuk alokasi memori dinamis.

Contoh kode:

#include <stdio.h>
#include <stdlib.h>

int main() {
    char *line = NULL;
    size_t len = 0;
    printf("Masukkan string: ");
    getline(&line, &len, stdin);  // Alokasi dinamis
    printf("String yang dimasukkan: %s", line);
    free(line);
    return 0;
}

Q4: Bagaimana cara menghapus newline yang tersisa dari fgets?

A:
Karena fgets menyertakan karakter newline, hasil output bisa memiliki baris kosong tambahan. Solusinya adalah menghapus newline secara manual.

Contoh kode:

char str[100];
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0';  // Hapus newline
printf("String yang dimasukkan: %s\n", str);

Q5: Bagaimana jika sisa input masih ada di buffer setelah fgets?

A:
Jika input melebihi ukuran buffer, sisa karakter akan tetap di buffer standar input. Untuk membersihkannya, gunakan getchar.

Contoh kode:

char str[10];
fgets(str, sizeof(str), stdin);

// Jika newline tidak terbaca, berarti ada sisa input
if (strchr(str, '\n') == NULL) {
    int c;
    while ((c = getchar()) != '\n' && c != EOF);  // Buang karakter sisa
}

printf("String yang dimasukkan: %s\n", str);

Q6: Bagaimana cara membatasi agar hanya menerima input alfanumerik?

A:
Tambahkan validasi untuk menolak karakter selain huruf dan angka.

Contoh kode:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int isValidInput(const char *str) {
    for (int i = 0; str[i] != '\0'; i++) {
        if (!isalnum(str[i])) {  // Tolak jika bukan alfanumerik
            return 0;
        }
    }
    return 1;
}

int main() {
    char str[50];
    printf("Masukkan hanya huruf atau angka: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';

    if (isValidInput(str)) {
        printf("Input valid: %s\n", str);
    } else {
        printf("Input tidak valid.\n");
    }
    return 0;
}

Q7: Bagaimana menangani string yang sangat panjang melebihi buffer?

A:
Gunakan pembacaan bertahap dengan fgets atau gunakan getline untuk alokasi memori dinamis. Dengan getline, string panjang bisa diproses tanpa khawatir buffer overflow.

Contoh:
Lihat kembali contoh penggunaan getline di atas.

8. Ringkasan

Artikel ini telah membahas secara sistematis mulai dari dasar hingga penerapan lanjutan mengenai input string dalam bahasa C. Dengan memahami fungsi yang tepat dan teknik praktis, Anda dapat mengelola input string secara aman dan efisien. Bagian ini merangkum poin-poin penting yang telah dipelajari.

1. Memahami Dasar Input String

Dalam bahasa C, string direpresentasikan sebagai array karakter, dan selalu diakhiri dengan karakter terminator \0. Pemahaman konsep dasar ini penting untuk menguasai manipulasi string.

2. Karakteristik & Pemilihan Fungsi Input

  • scanf:
    Tidak dapat menangani spasi, serta berisiko buffer overflow.
  • fgets:
    Lebih aman, memungkinkan pembatasan ukuran input. Namun, perlu menghapus newline secara manual.
  • getline:
    Menggunakan alokasi memori dinamis, cocok untuk input string panjang. Hanya tersedia di lingkungan POSIX.

3. Praktik Input String yang Aman

Untuk meningkatkan keamanan, poin-poin berikut perlu diperhatikan:

  1. Manajemen ukuran buffer: Batasi panjang input agar tidak melebihi kapasitas.
  2. Penanganan newline: Hapus newline agar data tetap bersih.
  3. Validasi input: Terapkan filter untuk mencegah data tidak valid. Tambahkan penanganan error dan mekanisme retry.

Dengan praktik ini, program akan lebih stabil dan aman.

4. Memperkuat Keterampilan melalui Contoh Lanjutan

Melalui contoh multi-baris dan penyimpanan ke file, kita dapat memahami penggunaan array 2D serta manajemen memori dinamis. Hal ini membuka jalan menuju pemrograman C yang lebih kompleks.

5. Jawaban atas Pertanyaan Umum

Bagian Q&A memberikan solusi terhadap masalah umum, seperti:

  • Bahaya penggunaan gets dan pentingnya menggunakan fgets atau getline.
  • Cara menangani spasi dan karakter khusus.
  • Penanganan input yang terlalu panjang dan penghapusan newline.

Dengan memahami poin-poin tersebut, Anda dapat menerapkannya langsung di proyek nyata.

6. Langkah Selanjutnya & Pembelajaran Lanjutan

Input string merupakan dasar dari banyak program C. Dengan menguasainya, Anda dapat melangkah ke topik lebih lanjut, seperti:

  1. Penggunaan fungsi string standar: Seperti strlen, strcmp, dan strcpy.
  2. Manajemen memori dinamis: Dengan malloc dan realloc.
  3. File I/O: Untuk mengolah data dalam jumlah besar.
  4. Struktur data & algoritma: Seperti pencarian string atau algoritma sorting.

7. Latihan untuk Memperkuat Pemahaman

Untuk memperdalam pemahaman, coba selesaikan tugas berikut:

  1. Tugas 1: Sistem Manajemen Daftar Nama
  • Buat program untuk mengelola data (nama, umur, dll.) dengan input multi-baris.
  1. Tugas 2: Program Pencarian Kata Kunci
  • Buat program yang mencari string tertentu dari input pengguna.
  1. Tugas 3: Sistem Log dengan File
  • Simpan input ke dalam file, lalu tampilkan kembali isinya.

Ringkasan Akhir

Artikel ini telah membahas dasar hingga lanjutan mengenai input string dalam bahasa C.
Poin terpenting:

  • Keamanan: Gunakan fungsi yang aman seperti fgets atau getline.
  • Manajemen buffer & error handling: Batasi ukuran input dan tangani kesalahan dengan benar.
  • Penerapan nyata: Latih dengan contoh multi-baris & file handling.

Dengan memahami dan mempraktikkannya, keterampilan Anda dalam bahasa C akan meningkat pesat.