Apakah rentetan dalam C?
A String dalam C hanyalah koleksi watak-watak dalam urutan linear. 'C' selalu memperlakukan rentetan satu data walaupun mengandungi ruang kosong. Satu watak didefinisikan menggunakan perwakilan petikan tunggal. Rentetan dilambangkan dengan menggunakan tanda petik berganda.
Example, "Welcome to the world of programming!"
'C' menyediakan pustaka standard
Dalam tutorial ini, anda akan belajar-
- Cara Menyatakan dan Memulakan Rentetan dalam C
- Input Rentetan: Baca Rentetan
- Output Rentetan: Cetak / Paparkan Rentetan
- fungsi fputs ()
- meletakkan fungsi
- Perpustakaan tali
- Menukar Rentetan ke Nombor
Cara Menyatakan dan Memulakan Rentetan dalam C
AC String adalah susunan sederhana dengan char sebagai jenis data. Bahasa 'C' tidak langsung menyokong rentetan sebagai jenis data. Oleh itu, untuk memaparkan String dalam C, anda perlu menggunakan array watak.
Sintaks umum untuk menyatakan pemboleh ubah sebagai String dalam C adalah seperti berikut,
char string_variable_name [array_size];
Deklarasi rentetan klasik boleh dilakukan seperti berikut:
char string_name[string_length] = "string";
Ukuran array mesti ditentukan semasa menyatakan pemboleh ubah C String kerana digunakan untuk mengira berapa watak yang akan disimpan di dalam pemboleh ubah rentetan dalam C. Beberapa contoh deklarasi rentetan yang sah adalah seperti berikut,
char first_name[15]; //declaration of a string variablechar last_name[15];
Contoh di atas mewakili pemboleh ubah rentetan dengan ukuran array 15. Ini bermaksud bahawa array rentetan C yang diberikan mampu memuat maksimum 15 aksara. Pengindeksan array bermula dari 0 oleh itu ia akan menyimpan aksara dari kedudukan 0-14. Penyusun C secara automatik menambahkan watak NULL '\ 0' ke array watak yang dibuat.
Mari kita pelajari inisialisasi String di C. Contoh berikut menunjukkan permulaan Strings dalam C,
char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
Dalam string3, watak NULL mesti ditambahkan secara eksplisit, dan watak-watak disertakan dalam tanda petik tunggal.
'C' juga membolehkan kita menginisialisasi pemboleh ubah rentetan tanpa menentukan ukuran array watak. Ia boleh dilakukan dengan cara berikut,
char first_name[ ] = "NATHAN";
Nama Strings dalam C bertindak sebagai penunjuk kerana pada dasarnya adalah array.
Input Rentetan: Baca Rentetan
Semasa menulis program interaktif yang meminta input pengguna, C menyediakan fungsi scanf (), mendapat (), dan fgets () untuk mencari sebaris teks yang dimasukkan dari pengguna.
Apabila kita menggunakan scanf () untuk membaca, kita menggunakan penentu format "% s" tanpa menggunakan "&" untuk mengakses alamat pemboleh ubah kerana nama array bertindak sebagai penunjuk. Sebagai contoh:
#includeint main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}
Pengeluaran:
Enter your first name and age:John_Smith 48
Masalah dengan fungsi scanf adalah bahawa ia tidak pernah membaca keseluruhan String dalam C. Ini akan menghentikan proses membaca sebaik sahaja ruang kosong, umpan bentuk, tab menegak, garis baru atau pengembalian kereta. Andaikan kita memberi input sebagai "Tutorial Guru99" maka fungsi scanf tidak akan pernah membaca keseluruhan rentetan kerana watak ruang kosong berlaku di antara kedua-dua nama tersebut. Fungsi scanf hanya akan membaca Guru99.
Untuk membaca rentetan berisi spasi, kami menggunakan fungsi get (). Mendapat mengabaikan ruang putih. Ia berhenti membaca apabila baris baru dicapai (kekunci Enter ditekan). Contohnya:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Pengeluaran:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Alternatif lain yang lebih selamat untuk mendapatkan () ialah fungsi fgets () yang membaca sebilangan watak yang ditentukan. Sebagai contoh:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Pengeluaran:
Enter your name plz: CarlosMy name is Carlos
Argumen fgets () adalah:
- nama rentetan,
- bilangan watak untuk dibaca,
- stdin bermaksud membaca dari input standard iaitu papan kekunci.
Output Rentetan: Cetak / Paparkan Rentetan
Fungsi printf standard digunakan untuk mencetak atau menampilkan String in C pada peranti output. Penentu format yang digunakan adalah% s
Contohnya,
printf("%s", name);
Output rentetan dilakukan dengan fungsi fput () dan printf ().
fungsi fputs ()
Fputs () memerlukan nama rentetan dan penunjuk ke tempat anda mahu memaparkan teks. Kami menggunakan stdout yang merujuk kepada output standard untuk mencetak ke layar. Contohnya:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Pengeluaran:
Enter your town: New YorkNew York
meletakkan fungsi
Fungsi meletakkan digunakan untuk Mencetak tali dalam C pada peranti output dan menggerakkan kursor kembali ke posisi pertama. Fungsi meletakkan boleh digunakan dengan cara berikut,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Sintaks fungsi ini agak mudah berbanding fungsi lain.
Perpustakaan tali
Perpustakaan 'C' standard menyediakan pelbagai fungsi untuk memanipulasi rentetan dalam program. Fungsi-fungsi ini juga disebut sebagai pengendali tali. Semua pengendali ini terdapat di dalam fail tajuk
Fungsi | Tujuan |
strlen () | Fungsi ini digunakan untuk mencari panjang tali. Ia mengembalikan berapa banyak watak yang terdapat dalam rentetan tidak termasuk watak NULL. |
strcat (str1, str2) | Fungsi ini digunakan untuk menggabungkan dua tali untuk membentuk satu rentetan. Ia Menambah atau menyatukan str2 hingga akhir str1 dan mengembalikan penunjuk ke str1. |
strcmp (str1, str2) | Fungsi ini digunakan untuk membandingkan dua rentetan antara satu sama lain. Ia mengembalikan 0 jika str1 sama dengan str2, kurang dari 0 jika str1 |
Mari kita pertimbangkan program di bawah ini yang menunjukkan fungsi perpustakaan rentetan:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
Pengeluaran:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Fungsi perpustakaan penting lain adalah:
- strncmp (str1, str2, n): ia mengembalikan 0 jika watak n pertama str1 sama dengan watak n pertama str2, kurang dari 0 jika str1
str2. - strncpy (str1, str2, n) Fungsi ini digunakan untuk menyalin rentetan dari rentetan lain. Menyalin watak n pertama str2 hingga str1
- strchr (str1, c): ia mengembalikan penunjuk ke kejadian pertama char c di str1, atau NULL jika watak tidak dijumpai.
- strrchr (str1, c): ia mencari str1 secara terbalik dan mengembalikan penunjuk ke kedudukan char c di str1, atau NULL jika watak tidak dijumpai.
- strstr (str1, str2): ia mengembalikan penunjuk ke kejadian pertama str2 dalam str1, atau NULL jika str2 tidak dijumpai.
- strncat (str1, str2, n) Menambah (menggabungkan) watak n pertama str2 hingga akhir str1 dan mengembalikan penunjuk ke str1.
- strlwr (): untuk menukar rentetan menjadi huruf kecil
- strupr (): untuk menukar rentetan menjadi huruf besar
- strrev (): untuk membalikkan rentetan
Menukar Rentetan ke Nombor
Dalam pengaturcaraan C, kita dapat mengubah rentetan karakter numerik menjadi nilai numerik untuk mencegah kesalahan run-time. Perpustakaan stdio.h mengandungi fungsi berikut untuk menukar rentetan menjadi nombor:
- int atoi (str) bermaksud ASCII menjadi integer; ia menukar str kepada nilai int yang setara. 0 dikembalikan jika watak pertama bukan nombor atau nombor tidak ditemui.
- double atof (str) bermaksud ASCII terapung, ia menukar str kepada nilai berganda yang setara. 0.0 dikembalikan jika watak pertama bukan nombor atau nombor tidak ditemui.
- long int atol (str) bermaksud ASCII hingga int panjang, Menukar str kepada nilai integer panjang yang setara. 0 dikembalikan jika watak pertama bukan nombor atau nombor tidak ditemui.
Program berikut menunjukkan fungsi atoi ():
#includeint main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}
Pengeluaran:
Enter a number: 221348you enter 221348
- Deklarasi penunjuk rentetan seperti char * string = "language" adalah pemalar dan tidak dapat diubah.
Ringkasan
- Rentetan adalah urutan watak yang disimpan dalam tatasusunan watak.
- Rentetan ialah teks yang disertakan dalam tanda petik berganda.
- Watak seperti 'd' bukan rentetan dan ditunjukkan oleh tanda petik tunggal.
- 'C' menyediakan fungsi perpustakaan standard untuk memanipulasi rentetan dalam program. Struktur manipulator disimpan dalam fail header
. - Rentetan mesti dinyatakan atau diinisialisasi sebelum digunakan ke dalam program.
- Terdapat fungsi rentetan input dan output yang berbeza, masing-masing mempunyai ciri-cirinya.
- Jangan lupa untuk memasukkan perpustakaan rentetan untuk berfungsi dengan fungsinya
- Kita boleh menukar rentetan menjadi nombor melalui atoi (), atof () dan atol () yang sangat berguna untuk proses pengkodan dan penyahkodan.
- Kita boleh memanipulasi rentetan yang berbeza dengan menentukan susunan rentetan dalam C.