Halo, dan selamat datang kembali. Dalam kuliah ini, saya ingin mulai berbicara tentang fungsi string.
Saya sebutkan sebelumnya
bahwa string, array karakter bukan
tipe data variabel di c.
Jadi, Anda dapat menggunakan salah satu
operator, tetapi Anda masih harus dapat melakukan banyak hal pada string.
Anda akan dapat memanipulasi mereka.
Anda akan ingin mendapatkan panjangnya. Anda ingin
membandingkannya, segala macam hal mungkin mengubahnya.
Jadi untungnya perpustakaan standar dilengkapi dengan banyak fungsi yang dapat
Anda gunakan untuk melakukan jenis operasi ini.
Pertama-tama saya akan mulai berbicara tentang beberapa yang paling umum dan kemudian
kita akan beralih ke beberapa yang lebih spesifik di kuliah lain.
Jadi kita sudah tahu bahwa string
karakter adalah array char yang diakhiri oleh karakter null.
String karakter biasanya digunakan dalam program c.
C untungnya menyediakan banyak fungsi yang dirancang khusus untuk bekerja dengan string.
Yang akan kita bahas adalah yang paling umum yang akan Anda gunakan.
Pertama, mendapatkan panjang string menggunakan fungsi str length.
Menyalin satu string karakter ke yang lain.
Ingat, saya katakan sebelumnya bahwa Anda tidak dapat menggunakan operator penugasan untuk menetapkan string.
Jadi yang Anda lakukan adalah menggunakan str copy atau strn copy.
Juga, menggabungkan dua string karakter bersama-sama, penggabungan.
Ada kucing str dan kucing strn.
Dan menentukan apakah dua karakter string sama.
Sekali lagi, operator equals equals tidak akan berfungsi untuk membandingkan string karena
mereka adalah array.
Jadi jika Anda ingin membandingkan string, Anda harus menggunakan fungsi khusus
yang disediakan oleh perpustakaan c. Str membandingkan dan str membandingkan.
Pertama, mari kita bicara tentang panjangnya.
Semua fungsi ini didefinisikan dalam string. file header, jadi Anda harus
menyertakannya saat memanggil atau memanggil salah satu fungsi ini.
Mendapatkan panjang string.
Panjang str adalah fungsi yang menemukan panjang string, cukup mudah.
Ini dikembalikan sebagai variabel ukuran t.
Anda dapat menggunakan variabel size t secara bergantian dengan int.
Tetapi pertama-tama, Anda harus menyertakan file header string itu jika Anda ingin menggunakan panjang str
dan beginilah cara Anda menggunakannya.
Anda pada dasarnya membuat string literal di dalam tanda kutip ganda dan Anda menetapkannya ke array karakter.
Anda tidak menentukan ukuran larik karakter.
Kompiler akan melakukannya untuk Anda dan akan menambahkan terminator nol.
Setelah Anda mendefinisikan string saya dengan konstanta
string, Anda kemudian dapat memanggil panjang str dan hanya meneruskan karakter
itu, cukup bagus.
Itu salah satu yang paling sering digunakan karena Anda sering ingin mendapatkan panjang string
ini ketika Anda melakukan pemeriksaan validasi atau apa pun
jika Anda ingin memastikan tidak ada buffer overflows, Anda dapat melakukannya juga.
Fungsi ini memang mengubah string.
Jadi header fungsi tidak menggunakan konstanta dalam
mendeklarasikan string parameter formal.
Jika Anda pergi dan melihat string. h di
dalam pengguna termasuk dalam direktori Anda, Anda akan melihat bahwa
itu tidak didefinisikan sebagai konstanta.
Menyalin string. Menyalin string adalah memodifikasi
string yang ada, memodifikasi array karakter
yang ada yang memiliki beberapa data di dalamnya.
Atau jika tidak ada apa-apa di dalamnya, Anda ingin memasukkan sesuatu ke dalamnya.
Karena Anda tidak dapat menetapkan kenaikan gaji di c, Anda juga tidak dapat menetapkan string. Saya menyebutkan ini sebelumnya, mendeklarasikan
karakter dan kemudian menggunakan operator penugasan yang sama tidak berfungsi.
Jadi yang harus Anda lakukan adalah Anda harus menggunakan fungsi str copy
untuk menyalin string ke string yang ada.
Ini setara dengan operator untuk string, operator penugasan.
Jika kita mendeklarasikan dua array karakter sumber dan
tujuan, yang perlu kita lakukan hanyalah mengatakan str copy source
dan kemudian apa pun sumbernya, kita dapat memasukkan string
dan sama dengan tujuan.
Anda juga dapat meletakkan variabel di sana jika Anda ingin menyalinnya.
Tapi apa yang kita lakukan di sini adalah parameter pertama di mana Anda menyalin.
Parameter kedua adalah string yang Anda salin.
Jadi sumber akan memiliki ini adalah sumber di dalamnya setelah str copy.
Tujuan atau tujuan akan memiliki ini adalah tujuan di
dalamnya setelah panggilan penyalinan str.
Fungsi salin str tidak memeriksa untuk melihat apakah string sumber benar-benar cocok dengan string target.
Jadi apa yang akan terjadi jika Anda memiliki string besar.
Jadi dalam contoh sebelumnya apa yang akan terjadi jika tujuan memiliki 100 karakter di dalamnya.
Dan alih-alih menjadikan ini sebagai tujuan, ia memiliki 100 karakter.
Anda mencoba menyalinnya ke sumber yang
hanya memiliki 50 karakter. Akan ada masalah.
String tujuan akan lebih besar dari string sumber yang Anda salin.
Jadi jika kami mencoba menyalin str copy ke sumber alih-alih menyalin ini sebagai sumber yang kami masukkan
ini bersumber lima kali atau sepuluh kali apa pun itu dan satu di atas 50,
akan ada kesalahan.
Dan saya akan menunjukkan itu.
Jadi cara yang lebih aman untuk menyalin string adalah dengan menggunakan strn copy. Anda akan melihat bahwa n dapat diubah
menjadi strn copy.
Salinan strn mengambil argumen ketiga.
Jumlah maksimum karakter untuk disalin.
Jadi di sini Anda benar-benar menentukan berapa banyak yang ingin Anda salin.
Jadi jika Anda memiliki sumber 40 dan tujuan 12 ukuran, pertama-tama Anda dapat melakukan
set m yang hanya mengatur ukuran data di dalam tujuan ke terminator nol dengan cara
itu ketika Anda menambahkan sesuatu itu akan secara otomatis ada di sana, don jangan khawatir tentang itu.
Salinan str akan menyalin halo bagaimana kabarmu ke sumber, dan itu
tidak akan memeriksa apakah kabarmu lebih besar dari sumber.
Tetapi jika Anda melakukan salinan strn dan Anda menyalin di
tujuan, itu akan menyalin sumber dan itu hanya akan menyalin 10 karakter pertama.
Sehingga argumen ketiga harus sesuai dengan ukuran tujuan.
Jadi mari kita masuk ke blok kode dan melihat panjang str dan melihat menyalin string untuk
melihat dengan tepat bagaimana ini bekerja.
Jadi di sini, kami memiliki utama kami.
Dan untuk mendapatkan senar yang panjangnya senar sangatlah mudah.
Kita akan membuat array karakter kita. Kami tahu cara membuat area karakter. Kami tidak ingin menentukan ukurannya,
tetapi kami harus meletakkan nama terlebih dahulu dan kemudian tanda kurung.
Dan kemudian kita dapat menginisialisasinya dengan apa pun yang kita
inginkan, katakan di dalam tanda kutip ganda. Tanda kutip ganda mewakili literal string.
Jadi saya hanya bisa mengatakan nama saya Jason.
Hasil akhir dari ini adalah
s akan menjadi array berukuran
17 karakter.
Semua karakter ini ditambah terminator nol.
Terminator nol adalah garis miring terbalik nol.
Anda tidak perlu meletakkannya di sana karena secara otomatis ditambahkan oleh kompiler.
Begitulah cara kita dapat menginisialisasi dan membuat string dalam array karakter.
Kemudian untuk mencetaknya, yang harus kita lakukan adalah mengatakan printf dan mengatakan panjangnya.
Dan kemudian kami menempatkan persen
s sebagai penentu format untuk menampilkan string.
Dan kemudian semua yang kita lakukan adalah kita menyebutkan nama string.
Dan agar tidak bingung, sebut saja string saya.
Dan kita tidak harus menggunakan ampersand seperti yang kita lakukan sebelumnya, contoh sebelumnya, kita
bisa mengatakan string saya saja. Jika kita mengkompilasi dan menjalankan
ini, kita mungkin juga harus memastikan bahwa kita menyertakan header string.
Saat kami mengkompilasi dan menjalankan ini, Anda akan melihat panjang string.
Jadi panjangnya adalah dan saya tidak memanggil fungsi panjang string.
Jadi Anda harus benar-benar memanggil fungsi tersebut jika ingin menampilkan panjangnya, jadi
lakukan saja seperti itu. Anda meletakkan string di dalam panjang str.
Sekarang ketika Anda menjalankannya, Anda akan benar-benar melihat panjang string.
Ini harus bukan string, tetapi aktual.
Jadi begitulah cara saya menampilkan string. Jika saya ingin menampilkan panjang
string, saya melakukan persen d dalam memanggil fungsi.
Sekarang ketika saya menjalankannya,
Anda akan melihat bahwa itu benar-benar mencetak 16, yang merupakan panjangnya.
Jadi itu fungsi yang cukup mudah untuk menggunakan panjang str. Jika Anda ingin menyalin
string, Anda menggunakan str compare.
Dan Anda ingin menggunakan strn compare untuk benar-benar menentukan byte.
Jadi di sini jika kita memiliki nama saya
Jason, dan kemudian kita membuat string
lain, sebenarnya kita akan menyimpannya saja. Kami bahkan tidak perlu
menentukan dan apa yang akan kami lakukan
adalah kami akan mengatakan buat string lain yang disebut
temp dan itu akan sama dengan str dan
bandingkan, kami akan meneruskan apa yang kami inginkan Salin ke.
Buat saja array karakter kosong, dan kita akan
membuatnya menjadi ukuran 50.
Dan apa yang akan kita lakukan di sini adalah kita akan mengatakan strn copy.
Parameter pertama adalah di mana kita ingin menyalin do, kita akan mengatakan temp.
Parameter kedua adalah apa yang ingin kita salin yang merupakan string saya.
Dan kemudian kami tidak ingin mengirimkan lebih dari 50 byte.
Jadi kami benar-benar dapat mengatakan ukuran temp untuk mengatakan kami
tidak ingin melewati lebih dari 50 byte. Dan Anda mungkin ingin melakukan -1
untuk terminator nol.
Dengan cara ini, parameter ketiga itu sangat penting karena kita tidak akan pernah mengalami buffer overflows.
Anda harus selalu menggunakan strn copy dan bukan str copy.
Dan kemudian di sini kita bisa menampilkan string kita untuk melihat apakah itu disalin.
Kita bisa mengatakan temp, mengubahnya menjadi persen s.
Dan ketika kita membangun ini,
kita akan melihat, bukan panjangnya, kita akan melihat string adalah sesuatu
seperti itu dan mengakhirinya dengan titik koma.
Sekarang kita harus mengkompilasi kita lakukan.
Jadi sekarang kita jalankan. Kita seharusnya hanya melihat string kita yang disalin.
Jadi kami melihat nama saya Jason dan itu disimpan
di dalam temp karena kami mencetak temp.
Tetapi selalu gunakan salinan strn. Jangan gunakan str copy,
itu akan memastikan Anda tidak memiliki buffer overflows.
Dan parameter ketiga harus selalu
menjadi tujuan, bukan sumber,
tujuan. Tidak ada gunanya mengatakan salin seluruh string ini.
Karena jika ini lebih kecil, Anda akan mengalami masalah. Jadi selalu katakan ukuran ini.
Dan Anda melihat bahwa Anda dapat menggunakan
operator sizeof untuk melihat berapa banyak byte di dalam karakter.
Mari kita bicara tentang beberapa fungsi lagi.
Jadi kita tahu cara mendapatkan panjangnya, kita tahu cara menyalin string, bagaimana dengan merangkai string.
Fungsi str cap mengambil dua argumen, dua string
sebagai argumen dan menyalin string kedua di akhir yang pertama.
String kedua tidak diubah,
hanya yang pertama. Ini akan mengembalikan nilai argumen pertamanya.
Alamat karakter pertama string yang ditambahkan string kedua.
Jadi kembalikan sesuatu, memberi tahu Anda di mana Anda benar-benar menambahkannya jika Anda perlu menggunakannya.
Jadi inilah contohnya, kami membuat string karakter dari string saya
dan itu hanya berisi string saya dengan terminator nol.
Kami membuat string karakter input, yaitu 80, kosong.
Kami mengatakan masukkan string untuk digabungkan. Kami membacanya di.
Dan kemudian kita menggabungkannya.
Kami mencetak string asli diikuti oleh string gabungan dan kemudian input.
Jadi setelah ini, apa pun yang Anda masukkan akan
diletakkan di akhir string saya. Jadi jika Anda memasukkan Jason, itu akan menjadi string luar angkasa saya, Jason.
Itulah yang string saya akan sama dengan.
Karena Anda melakukan str cat di atasnya.
Pertama kita mencetak string dan kemudian kita memanggil str cat di atasnya.
Input sebenarnya akan sama dengan apa pun yang dimasukkan, string
saya diikuti oleh apa pun yang dimasukkan.
Kita akan membahas contoh ini sebentar lagi. Sekarang seperti str
copy, str cat juga memiliki strn end cat.
Jadi versi gabungan menjadi string pertama yang baru.
Jadi seperti rangkaian string dengan kucing str, ada
kucing strn.
Str cat memiliki masalah yang sama dengan str copy. Itu dapat memiliki buffer overflow. Itu tidak benar-benar
memastikan bahwa string kedua akan cocok dengan array pertama.
Jadi, jika Anda tidak memiliki cukup ruang di larik pertama itu, Anda dapat mengalami masalah buffer overflow.
Jadi apa yang Anda ingin menggunakan kucing strn.
Argumen kedua menunjukkan jumlah karakter maksimum untuk ditambahkan.
Jadi misalnya, jika Anda melakukan strn cat
and two strings bug add-on, itu hanya akan menambahkan 13 karakter pertama add-on ke bug, tergantung
mana yang lebih dulu. Jika add-on kurang dari 13,
maka add-on hanya akan ditambahkan sampai Anda melihat terminator nol.
Jadi dalam contoh ini, kami membuat dua string.
Ini adalah sumber tujuan ini. Kami sedang melakukan kucing strn.
Kami hanya menyalin 15 karakter ke
tujuan di akhir. Jadi berapa pun ukuran tujuan akan
menjadi ukuran tujuan ditambah 15 dan kemudian kami mencetaknya.
Jadi mari kita lihat ini dalam blok kode lagi.
Jadi inilah contoh kita dan kita akan membuat dua array
string karakter, satu ukuran 50, ukuran lainnya 50.
Kami akan melakukan dua salinan str untuk mengaturnya ke data.
Ini adalah tujuan sumber. Dan kemudian pada baris 12, kita melakukan strn cat.
Dan tujuan akan menjadi apa yang kita gabungkan.
Jadi sumbernya akan menjadi apa yang akan kita gabungkan.
Dan kami hanya akan menetapkan 15 karakter.
Jadi jika sumbernya lebih besar dari 15, kami
tidak akan menyalin semuanya.
Jadi ketika kami membangun ini
dan menjalankannya, Anda hanya akan melihat bahwa
sekarang dikatakan ini adalah file sumber atau akan mengatakan ini adalah
tujuan diikuti oleh ini adalah sumber.
Jadi dikatakan ini adalah tujuan, ini adalah sumber.
Itu digabungkan ke akhir tujuan.
Jadi Anda selalu ingin menggunakan strn cat untuk penggabungan, sehingga Anda tidak memiliki buffer overflows.
Mari kita bicara tentang str compare, yang secara tidak sengaja saya
katakan alih-alih str copy, str compare.
Jadi untuk membandingkan string, kita juga harus menggunakan fungsi.
Jika Anda ingin membandingkan satu string dengan string lainnya,
Anda tidak dapat menggunakan persamaan ganda, yang hanya memeriksa referensi apakah Anda
memiliki alamat yang sama atau tidak. Jadi yang perlu Anda gunakan adalah str compare.
Ini akan membandingkan isi string.
Itu tidak membandingkan array. Sehingga dapat digunakan untuk membandingkan
string yang disimpan dalam array dengan ukuran yang berbeda.
Itu tidak membandingkan karakter.
Anda dapat menggunakan argumen seperti apel dan tanda kutip ganda, tetapi Anda
tidak dapat menggunakan argumen karakter seperti karakter tunggal a.
Fungsi ini melakukan untuk string apa yang dilakukan operator relasional untuk angka.
Jadi fungsi bandingkan akan mengembalikan
nilai yang memberi tahu Anda apakah string itu sama atau tidak,
apakah lebih besar atau lebih kecil.
Jika itu sama, itu akan kembali nol.
Jika kurang dari, itu akan kembali kurang dari nol, jika str
satu kurang dari str dua.
Dan jika str dua kurang dari str satu itu akan kembali lebih besar dari nol.
Jadi apa sebenarnya artinya ini? Baiklah, izinkan saya
memberi Anda contoh cara kerjanya.
Mari kita letakkan ini di blok kode dan jalankan.
Tapi di sini kami melakukan banyak perbandingan str, dan kami akan memberi tahu Anda apa nilainya, apakah mereka kurang
dari atau lebih besar daripada karena tidak terlalu jelas.
Jadi mari kita ambil ini dan melihatnya di blok kode.
Jadi inilah contoh kita. Dan kami membandingkan sekelompok string dan kemudian
hanya menampilkan hasil str
compare, apakah itu nol atau apa pun.
Jadi jika Anda membandingkan dua string a dan a, mereka harus dalam tanda kutip ganda.
Dan apa yang Anda lihat di sini apa yang kami lakukan adalah mencetak apa yang kami sebut.
Jadi kami
membatasi tanda kutip. Kami menempatkan garis miring terbalik sehingga kami benar-benar mencetak
karakter kutipan dan tidak mengakhiri string. Tetapi jika kita membandingkan a dan
a, ini akan menghasilkan nol. Karena nol berarti string sama.
Jika kita membandingkan a dan b, str compare harus mengembalikan kurang
dari.
Karena a lebih kecil dari b.
B a harus mengembalikan a lebih besar dari nol.
Tapi mari kita lihat ini, pastikan saya tidak membuat kesalahan
dan kita akan benar-benar melihatnya di output.
Jadi ketika kami menjalankan
ini dan ini membantu Anda mengingat nomor apa yang akan dikembalikan.
Jadi ketika Anda membandingkan a dan a, Anda benar-benar mendapatkan 0.
Jika Anda membandingkan a dan b, b kurang
dari a, jadi itu negatif, sesuatu yang kurang dari
nol, saya mungkin akan mengatakan sebaliknya, lihat bahkan
saya masih membuat mereka bingung. Karena a lebih besar dari b, a
lebih besar dari b, negatif.
B kurang dari a, jadi Anda mendapatkan sesuatu yang lebih besar dari nol yang merupakan satu.
C lebih besar dari a, jadi Anda mendapatkan satu, hanya ketika
b lebih besar dari a.
Dan kemudian Anda membandingkan huruf besar dan huruf kecil.
Ketika Anda membandingkan huruf besar dan huruf kecil, itu kebalikannya. Z sebenarnya lebih kecil
dari huruf kecil a.
Jadi modal selalu kurang dari huruf kecil.
Jika Anda mencoba membandingkan apel dan apel, itu akan menjadi 1 karena apel
lebih kecil dari apel.
Dan begitulah cara kerja perbandingan. Sangat penting untuk memahami 0 lebih besar dari
1 atau kurang dari 1. Sekali lagi kurang
dari nol akan mengatakan bahwa string pertama kurang dari
string kedua.
Dan lebih besar dari nol akan mengatakan string pertama lebih besar dari string kedua.
Fungsi ini sangat mudah digunakan. Anda tidak perlu khawatir
tentang segala jenis strn compare karena tidak masalah ukuran array
yang Anda bandingkan.
Fungsi str compare membandingkan string hingga menemukan karakter yang sesuai yang berbeda.
Jadi itu bisa sampai ke ujung salah satu string.
Fungsi perbandingan strn membandingkan string hingga berbeda atau hingga membandingkan
sejumlah karakter yang ditentukan oleh argumen ketiga.
Jadi dalam hal ini, Anda tidak perlu menggunakan strn
compare untuk buffer overflows. Itu ada, tetapi Anda hanya akan
menggunakannya jika Anda hanya ingin membandingkan sejumlah karakter tertentu.
Ini digunakan secara berbeda
dari str copy atau strn copy atau strn cat.
Perbandingan str hanya mengatakan saya hanya ingin menampilkan begitu banyak karakter.
Jadi akan berguna jika Anda hanya mencari awalan.
Jadi jika Anda ingin mencari string yang dimulai dengan astro,
Anda dapat membatasi pencarian pada lima karakter pertama dan Anda
akan menggunakan strn compare dengan cara ini.
Jadi contoh ini Anda melihat bahwa kami mengatakan sama dengan nol.
Anda sering melihat pernyataan if seperti ini saat menggunakan str compare.
Anda melihat str membandingkan di dalam pernyataan ini dan sama dengan nol untuk mengatakan bahwa itu sama.
Jadi strn compare menggunakan lima karakter pertama,
membandingkan astro dengan lima karakter pertama astronomi.
Ini akan mengatakan bahwa ia menemukannya. Ini akan sama dengan nol, dan itu akan mengatakan menemukan astronomi.
Jika Anda melakukan hal yang sama, tetapi membandingkannya dengan string berbeda yang disebut
mencengangkan, ia tidak akan menemukannya, itu sebenarnya akan ditampilkan - ia akan
mengatakan bahwa mencengangkan lebih besar dari astro. Jadi itu akan menampilkan sesuatu yang lebih
besar dari 0, yaitu 1 dan tidak akan
menampilkan data apa pun.
Jadi gunakan str compare saat Anda membandingkan string untuk semua konten.
Gunakan strn compare ketika Anda hanya ingin membandingkan awalan dengan string.
Jenis sintaks atau strn yang sama hanya membandingkan argumen ketiga itu.
Jadi kami berbicara banyak tentang beberapa
fungsi yang sangat penting yang akan kami gunakan,
terutama str length, strn copy, strn cat, dan strn compare.
Kami akan menghadapi tantangan di mana Anda harus memanfaatkan fungsi-fungsi ini yang akan membuat
Anda terbiasa dengannya.
Tapi Anda akan menjadi benar-benar akrab dengan ini
karena Anda akan berakhir menggunakannya berulang-ulang. Terima kasih.