Berikut adalah kodenya:

#include<stdio.h>

int main()
{
    int alpha = 0, input;

    while((input = getchar() != EOF))
    {
        if(isalpha(input))
            alpha++;
    }

    printf("Num of alpha is %d", alpha);
    return(0);
}

Saya mendapatkan kesalahan sebagai

isalpha tidak dideklarasikan dalam lingkup ini

Ketika dikompilasi pada kompiler DevC++.

-4
Ganesh Mallya 12 Mei 2021, 10:46

1 menjawab

Jawaban Terbaik

isalpha() dideklarasikan dalam ctype.h

Mungkin ada baiknya untuk mengetahui bahwa meskipun argumen untuk isalpha (dan semua fungsi keluarga isxxx) adalah int, perilaku tidak ditentukan jika argumennya negatif. Jadi, jika Anda menggunakan mesin di mana char ditandatangani sebagai default, Anda mungkin mengalami masalah kecuali Anda melakukan cast terlebih dahulu. Seperti ini:

char c;
// Some code
if(isalpha((unsigned char) c)) {

Ini bisa menjadi kebiasaan yang baik untuk selalu menggunakan fungsi-fungsi ini. Namun, JANGAN gunakan casting sebagai goto untuk membungkam peringatan. Itu dapat dengan mudah menyembunyikan kesalahan. Dalam kebanyakan kasus ketika pemeran diperlukan, kode Anda salah dalam beberapa cara lain. Kata-kata kasar tentang casting

Jebakan lain dengan fungsi-fungsi ini (dan banyak fungsi C lainnya yang mengembalikan int sebagai Boolean) adalah bahwa mereka diharuskan mengembalikan nol pada false, tetapi diizinkan untuk mengembalikan nilai bukan nol pada true. Jadi cek seperti ini benar-benar omong kosong:

if( isalpha(c) == 1 ) 

Alih-alih lakukan salah satu dari ini:

if( isalpha(c) != 0 )   // If not zero
if( isalpha(c) )        // Use directly as Boolean (recommended)
if( !! isalpha(c) == 1) // Double negation turns non zero to 1
1
klutt 12 Mei 2021, 14:06