Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Penunjuk Karakter dan Penggunaan Fungsi di C

Apa itu Penunjuk Karakter di C?

Penunjuk karakter menyimpan alamat tipe karakter atau alamat karakter pertama dari array karakter (string). Penunjuk karakter sangat berguna saat Anda berupaya memanipulasi string.

Tidak ada tipe data string di C. Array tipe "char" dianggap sebagai string. Oleh karena itu, pointer dari array tipe char mewakili sebuah string. Pointer char ini kemudian dapat diteruskan sebagai argumen ke fungsi untuk memproses string.

Mendeklarasikan Penunjuk Karakter

Penunjuk karakter menunjuk ke karakter atau array karakter. Jadi, untuk mendeklarasikan penunjuk karakter, gunakan sintaks berikut:

char *pointer_name;

Menginisialisasi Penunjuk Karakter

Setelah mendeklarasikan penunjuk karakter, Anda perlu menginisialisasinya dengan alamat variabel karakter. Jika terdapat array karakter, Anda cukup menginisialisasi penunjuk karakter dengan memberikan nama array karakter atau alamat elemen pertamanya.

Penunjuk Karakter dari Karakter

Berikut ini adalah sintaks untuk menginisialisasi penunjuk karakter dari suatu tipe karakter:

char *pointer_name = &char_variable;

Penunjuk Karakter dari Array Karakter

Berikut ini adalah sintaks untuk menginisialisasi penunjuk karakter dari array karakter (string):

char *pointer_name = char_array;
/*or*/
char *pointer_name = &char_array[0];

Contoh Penunjuk Karakter

Dalam contoh berikut, kita memiliki dua variabel karakter dan array karakter. Kami mengambil dua variabel penunjuk untuk menyimpan alamat karakter dan array karakter, dan kemudian mencetak nilai variabel menggunakan penunjuk karakter.

#include <stdio.h>
int main() {
 // Declare two variables
 char x = 'P';
 char arr[] = "TutorialsPoint";
 // Declaring character pointers
 char *ptr_x = &x;
 char *ptr_arr = arr;
 // Printing values
 printf("Value of x : %c\n", *ptr_x);
 printf("Value of arr: %s\n", ptr_arr);
 
 return 0;
}

Keluaran

Jalankan kode dan periksa hasilnya −

Value of x : P
Value of arr: TutorialsPoint

Memahami Penunjuk Karakter

Sebuah string dideklarasikan sebagai array sebagai berikut −

char arr[] = "Hello";

String adalah array karakter yang diakhiri dengan NULL. Elemen terakhir dalam array di atas adalah karakter NULL (\0).

Deklarasikan pointer bertipe char dan berikan alamat karakter pada posisi ke-0 −

char *ptr = &arr[0];

Ingatlah bahwa nama array itu sendiri adalah alamat elemen ke-0.

char *ptr = arr;

Sebuah string dapat dideklarasikan menggunakan pointer dan bukan variabel array (tanpa tanda kurung siku).

char *ptr = "Hello";

Hal ini menyebabkan string disimpan di memori, dan alamatnya disimpan di ptr. Kita dapat melintasi string dengan menambah ptr.

while(*ptr != '\0'){
 printf("%c", *ptr);
 ptr++;
}

Mengakses Array Karakter

Jika Anda mencetak array karakter menggunakan penentu format %s, Anda bisa melakukannya dengan menggunakan nama penunjuk karakter. Namun jika Anda ingin mengakses setiap karakter dari array karakter, Anda harus menggunakan tanda bintang (*) sebelum nama penunjuk karakter lalu menambahkannya.

Contoh

Berikut kode program selengkapnya −

#include <stdio.h>
int main(){
 char arr[] = "Character Pointers and Functions in C";
 char *ptr = arr;
 while(*ptr != '\0'){
 printf("%c", *ptr);
 ptr++;
 }
}

Keluaran

Jalankan kode dan periksa hasilnya −

Character Pointers and Functions in C

Contoh

Alternatifnya, teruskan ptr ke printf() dengan format %s untuk mencetak string.

#include <stdio.h>
int main(){
 char arr[] = "Character Pointers and Functions in C";
 char *ptr = arr;
 printf("%s", ptr);
}

Keluaran

Saat menjalankan kode ini, Anda akan mendapatkan keluaran yang sama−

Character Pointers and Functions in C

Fungsi Penunjuk Karakter

File header "string.h" mendefinisikan sejumlah fungsi perpustakaan yang melakukan pemrosesan string seperti mencari panjang string, menyalin string, dan membandingkan dua string. Fungsi-fungsi ini menggunakan argumen penunjuk char.

Fungsi strlen()

Fungsi strlen() mengembalikan panjangnya, yaitu jumlah karakter dalam sebuah string. Prototipe fungsi strlen() adalah sebagai berikut −

int strlen(char *)

Contoh 1

Kode berikut menunjukkan bagaimana Anda dapat mencetak panjang string −

#include <stdio.h>
#include <string.h>
int main(){
 char *ptr = "Hello";
 printf("Given string: %s \n", ptr);
 printf("Length of the string: %d", strlen(ptr));
 return 0;
}

Saat Anda menjalankan kode ini, ini akan menghasilkan keluaran berikut −

Given string: Hello 
Length of the string: 5

Contoh 2

Secara efektif, fungsi strlen() menghitung panjang string sesuai fungsi yang ditentukan pengguna str_len() seperti yang ditunjukkan di bawah ini −

#include <stdio.h>
#include <string.h>
int str_len(char *);
int main(){
 char *ptr = "Welcome to Tutorialspoint";
 int length = str_len(ptr);
 printf("Given string: %s \n", ptr);
 printf("Length of the string: %d", length);
 
 return 0;
}
int str_len(char *ptr){
 int i = 0;
 while(*ptr != '\0'){
 i++;
 ptr++;
 }
 return i;
}

Saat Anda menjalankan kode ini, ini akan menghasilkan keluaran berikut −

Given string: Welcome to Tutorialspoint 
Length of the string: 25

Fungsi strcpy()

Operator penugasan ( =) tidak digunakan untuk menetapkan nilai string ke variabel string, yaitu penunjuk char. Sebagai gantinya, kita perlu menggunakan fungsi strcpy() dengan prototipe berikut −

char * strcpy(char * dest, char * source);

Contoh 1

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan fungsi strcpy() −

#include <stdio.h>
#include <string.h>
int main(){
 char *ptr = "How are you doing?";
 char *ptr1;
 strcpy(ptr1, ptr);
 printf("%s", ptr1);
 return 0;
}

Fungsi strcpy() mengembalikan pointer ke string tujuan ptr1.

How are you doing?

Contoh 2

Secara internal, fungsi strcpy() mengimplementasikan logika berikut dalam fungsi str_cpy() yang ditentukan pengguna −

#include <stdio.h>
#include <string.h>
void str_cpy(char *d, char *s);
int main(){
 char *ptr = "Using the strcpy() Function";
 char *ptr1;
 str_cpy(ptr1, ptr);
 printf("%s", ptr1);
 return 0;
}
void str_cpy(char *d, char *s){
 int i;
 for(i = 0; s[i] != '\0'; i++)
 d[i] = s[i];
 d[i] = '\0';
}

Saat Anda menjalankan kodenya, output berikut akan dihasilkan −

Using the strcpy() Function

Fungsi ini menyalin setiap karakter dari string sumber ke tujuan hingga karakter NULL "\0" tercapai. Setelah loop, ia menambahkan karakter "\0" di akhir array tujuan.

Fungsi strcmp()

Operator perbandingan biasa (<,>, <=,>=, ==, dan !=) tidak boleh digunakan untuk membandingkan dua string. Sebagai gantinya, kita perlu menggunakan fungsi strcmp() dari file header "string.h". Prototipe fungsi ini adalah sebagai berikut −

int strcmp(char *str1, char *str2)

Fungsi strcmp() memiliki tiga kemungkinan nilai kembalian −

Contoh 1

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan fungsi strcmp() dalam program C−

#include <stdio.h>
#include <string.h>
int main(){
 char *s1 = "BASK";
 char *s2 = "BALL";
 int ret = strcmp(s1, s2);
 if (ret == 0)
 printf("Both strings are identical\n");
 else if (ret > 0)
 printf("The first string appears after the second string \n");
 else
 printf("The first string appears before the second string \n");
 return 0;
}

Jalankan kode dan periksa hasilnya −

The first string appears after the second string

Ubah s1 menjadi BACK dan jalankan kodenya lagi. Sekarang, Anda akan mendapatkan keluaran berikut −

The first string appears before the second string

Contoh 2

Anda bisa mendapatkan hasil serupa menggunakan fungsi yang ditentukan pengguna str_cmp(), seperti yang ditunjukkan pada kode berikut −

#include <stdio.h>
#include <string.h>
int str_cmp(char *str1, char *str2);
int main(){
 char *s1 = "The Best C Programming Tutorial Available Online";
 char *s2 = "The Best C Programming Tutorial Available Online";
 int ret = str_cmp(s1, s2);
 if (ret == 0)
 printf("Both strings are identical\n");
 else if (ret > 0)
 printf("The first string appears after the second string\n");
 else
 printf("The first string appears before the second string\n");
 return 0;
}
int str_cmp(char *str1, char *str2) {
 while (*str1 != '\0' && *str2 != '\0') {
 if (*str1 != *str2) {
 return *str1 - *str2;
 }
 str1++;
 str2++;
 }
 // If both strings are equal, return 0
 
 return 0;
}

Saat Anda menjalankan kode ini, ini akan menghasilkan keluaran berikut −

Both strings are identical

Fungsi str_cmp() membandingkan karakter pada indeks yang sama dalam sebuah string hingga karakter di salah satu string habis atau karakternya sama.

Pada saat mendeteksi karakter yang tidak sama pada indeks yang sama, perbedaan nilai ASCIInya dikembalikan. Ia mengembalikan "0" ketika loop dihentikan.


Bahasa C

  1. C - Penanganan Kesalahan
  2. C# if, if...else, if...else if dan Nested if Statement
  3. Melewati Array ke Fungsi dalam Pemrograman C++
  4. C# kelas dan metode tersegel
  5. Tutorial Kerangka Kerja Otomasi Tes UI Berkode
  6. C# kelas abstrak dan metode
  7. Koneksi Database C#:Cara menghubungkan SQL Server (Contoh)
  8. Cara Mengunduh dan Menginstal Kompilator GCC di C untuk Windows PC
  9. C# Array Multidimensi
  10. C - Fungsi