Tutorial bahasa C kali ini masih membahas tentang string. Jika sebelumnya kita mempelajari cara pembacaan string yang tidak cukup dengan perintah scanf saja, kali ini akan dibahas tentang cara mengubah isi string yang juga butuh perlakuan khusus.
Error Pada Saat Mengubah Isi String
Dalam beberapa tutorial sebelumnya, kita secara langsung mengisi string pada saat proses deklarasi atau menggunakan perintah scanf / gets. Misalnya: char nama[20]= "Andika Putra".
Tapi ketika isi string diisi setelah di deklarasikan, akan terjadi error. Berikut contohnya:
#include <stdio.h> int main(void) { char nama[20]; nama = "Andika Putra"; printf("Selamat belajar %s \n", nama); return 0; }
Hasil kode program:
error: assignment to expression with array type
Error di atas terjadi karena di dalam bahasa C kita tidak bisa langsung mengubah isi array. Operasi pemberian nilai nama = "Andika Putra" tidak bisa dipakai. Solusinya, harus menggunakan function strcpy.
Cara penggunaan function strcpy
Perintah strcpy bisa dipakai untuk memcopy sebuah string ke dalam string lain, atau sebuah string ke dalam variabel. Dalam bahasa C, strcpy adalah sebuah fungsi atau function.
Menggunakan fungsi strcpy, contoh sebelumnya bisa diubah menjadi sebagai berikut:
#include <stdio.h> int main(void) { char nama[20]; strcpy(nama, "Andika Putra"); printf("Selamat belajar %s \n", nama); return 0; }
Hasil kode program:
Selamat belajar Andika Putra
Sekarang proses pemberian nilai baru ke dalam variabel nama sudah berhasil.
Fungsi strcpy butuh 2 buah "nilai" atau dalam istilah programming butuh 2 buah "argumen". Argumen ini ditulis dalam tanda kurung. Perintah strcpy(nama, "Andika Putra") artinya copy string "Andika Putra" ke dalam variabel nama.
Proses pertukaran nilai string ini juga bisa dilakukan beberapa kali, seperti contoh berikut:
#include <stdio.h> int main(void) { char nama[20]; strcpy(nama, "Andika Putra"); printf("Selamat belajar %s \n", nama); strcpy(nama, "Alex Firmansyah"); printf("Selamat belajar %s \n", nama); strcpy(nama, "Fany Ramadhani"); printf("Selamat belajar %s \n", nama); return 0; }
Di sini saya mengubah nilai variabel nama sebanyak 3 kali menggunakan function strcpy, kemudian menampilkannya menggunakan perintah printf.
Sedikit catatan, meskipun kita tidak bisa mengubah nilai string secara langsung, tapi setiap element array bisa diubah seperti biasa. Berikut contoh prakteknya:
#include <stdio.h> int main(void) { char nama[20] = "Andika Putra"; printf("Selamat belajar %s \n", nama); nama[0] = 'I'; printf("Selamat belajar %s \n", nama); return 0; }
Hasil kode program:
Selamat belajar Andika Putra Selamat belajar Indika Putra
Di baris 8, saya mengubah nilai karakter pertama dari string nama dengan huruf 'I', sehingga isi variabel nama berubah menjadi "Indika Putra". Artinya, kita tetap bisa mengubah setiap element array nama secara langsung, tapi tidak bisa mengubah keseluruhan string (harus menggunakan function strcpy).
Dalam lanjutan tutorial belajar bahasa pemrograman C di Duniailkom kali ini kita telah membahas cara mengubah string dengan fungsi strcpy. Berikutnya akan dibahas tentang tipe data struct bahasa C.
saya ingin bertanya mas, sebenarnya yang akan saya tanyakan ini belum ada di bahas di topik" postingan sebelumnya, kalau tidak keberatan mas tolong di jawab. yang ingin saya tanyakan ialah,
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, n;
time_t t;
n = 5;
srand((unsigned) time(&t));
for( i = 0 ; i < n ; i++ )
{
printf("%d\n", rand() % 50);
}
scanf("%d");
return(0);
}
fungsi unsigned didalam srand itu apa ya mas, saya tidak faham..
type time_t itu memangnya ada ya mas? jelasin dong mas..
terus di time(&t) itu seharusnya kan time(null) mas, tpi kok disana time(&t)..
saya sebenarnya sudah mencari di google tapi tidak ada yang bisa memberikan pengertian kepada saya tentang tiap" elemen tersebut, tapi karena saya masih penasaran jadi saya memutuskan buat bertanya disini, tolongin ya mas :)
Fungsi srand() dipakai untuk membuat seed, atau nilai awal untuk random generator. Fungsi srand() butuh 1 argument berupa angka acak unsigned (angka positif). Lebih lanjut tentang unsigned sudah saya bahas kesini: https://www.duniailkom.com/tutorial-belajar-c-pengertian-dan-contoh-kode-program-tipe-data-integer/
Sebenarnya diganti dengan angka biasapun juga bisa, misalnya: srand(6676), atau srand(5). Hanya saja jika angka seednya tetap, angka acak yang dihasilkan dari fungsi rand() juga akan selalu tetap. Disini seednya diambil dari waktu saat ini sehingga akan selalu berubah-ubah.
Soal tipe data time_t berasal dari library #include <time.h>. Kalau untuk tanda &t itu menandakan pointer. Agar rumit sih kalau dijelaskan, tapi ada beberapa tipe data yang memang harus ditulis dengan pointer. Proses pembacaan dengan scanf juga banyak yang harus pakai tanda '&', contohnya ke sini: https://www.duniailkom.com/tutorial-belajar-c-fungsi-scanf-dan-cara-penggunaan-perintah-scanf/