Saya seharusnya menjawab pertanyaan pekerjaan rumah untuk salah satu kelas saya. Secara khusus, saya seharusnya mengatakan apakah array dalam C dianggap string atau tidak. Berdasarkan artikel ini ( https://www.geeksforgeeks.org/strings-in-c-2/ ) Saya tahu bahwa string adalah array karakter dengan terminator nol di akhir.
Hangup utama saya adalah bagian dari pertanyaan yang menanyakan tentang array yang terlihat seperti ini:
char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' };
Ini jelas merupakan array karakter dengan karakter terminasi nol di akhir. Namun, apakah masih dianggap sebagai string karena ia juga memiliki karakter terminasi nol di tengah? Bagaimana itu akan mempengaruhi string?
EDIT: Berdasarkan komentar, saya telah memberikan kata-kata aktual dari pertanyaan:
"Manakah dari array berikut ini yang dapat dianggap sebagai" string "untuk keperluan menggunakannya sebagai argumen untuk strcpy (), strncpy (), strcmp (), strncmp (), dan fungsi string serupa (menunjukkan semua yang berlaku)?"
EDIT: Saya diemail profesor saya tentang hal itu karena pertanyaan itu tampaknya kata-kata yang ambigu (seperti beberapa orang tunjukkan). Jika ada orang yang penasaran, dia berkata kepada saya, "Ya itu adalah string. Kuncinya adalah bahwa ada karakter nol. Tapi tentu saja itu akan mempengaruhi operasi string apa pun; string berakhir pada karakter nol."
strcmp()
. Apakah itu dapat digunakan sebagai argumen untuk mematikan fungsi string tergantung pada faktor-faktor tambahan yang tidak disediakan.
c1
bisa berubah, jadi saya tidak melihat mengapa itu akan gagal menjadi argumen tujuan yang valid untuk strcpy
atau serupa, kecuali karena itu tidak cukup besar untuk mengakomodasi string sumber. Itu tidak akan membuatnya menjadi string, hanya saja tidak cocok untuk tujuan tertentu.
c1
akan memenuhi persyaratan dasar untuk argumen string untuk semua fungsi string (sempit) perpustakaan standar, termasuk semua yang secara spesifik dinamai, tetapi perilaku mungkin bukan apa yang diharapkan atau diinginkan penelepon (bahkan mengabaikan perilaku tidak terdefinisi yang dapat ditimbulkan).
char
. Semua tipe karakter akan dilakukan.
"CS"
dengan beberapa byte sampah yang ditambahkan (dalam hal ini karakter NUL akhir tidak relevan). Tetapi ini bukan string "secara keseluruhan". - Namun demikian, memberi makan ini kestrcpy
dll tidak akan membuat pc Anda meledak karena fungsi-fungsi ini akan "melihat" hanya"CS"
bagian itu.