Page 138 - Project Akhir Media Pendidikan
P. 138

a.  Fungsi strcpy()

                      Prototipe dari fungsi ini adalah sebagai berikut.


                      char *strcpy(char *str1, char *str2);



                      Fungsi ini akan melakukan penyalinan (copy) dari string str2 ke str1 (termasuk juga
                      karakter  null).  Namun  hal  yang  perlu  diperhatikan  di  sini  adalah  keduanya  merupakan
                      pointer sehingga pada saat proses penyalinan string, kita harus melakukan pengalokasian
                      memori terlebih dahulu untuk pointer str1. Apabila pengalokasian  memori tersebut tidak
                      dilakukan  maka  akan  menimbulkan  masalah  dengan  memori, yaitu berupa penimpaan
                      (overwrite)  sebanyak  strlen(str2)  byte.  Berikut  ini  contoh  program  yang  akan
                      mengilustrasikan  penggunaan  fungsi  strcpy().


                      #include <stdio.h>
                      #include <string.h>
                      #include <stdlib.h>        /* untuk menggunakan fungsi malloc() */
                      int main(void) {
                         char str_sumber[] = “Ini adalah string yang akan disalin”;

                         /* Mendeklarasikan variabel untuk menampung string hasil
                            penyalinan */
                         char str_tujuan1[100];         /* mengalokasikan 100 byte untuk 100
                                                           karakter */
                         char *str_tujuan2;             /* pointer ke char namun belum
                                                           dialokasikan  */
                         char *str_tujuan3;             /* pointer ke char namun belum
                                                           dialokasikan  */

                         /* Melakukan penyalinan dari str_sumber ke variabel
                            str_tujuan1 */
                         strcpy(str_tujuan1,  str_sumber);

                         /* Melakukan penyalinan dari str_sumber ke variabel
                            str_tujuan2 */
                         /* Di sini kita harus melakukan alokasi memori terlebih
                            dahulu */
                         str_tujuan2  =
                           (char *) malloc(sizeof(char) * (strlen(str_sumber) + 1));
                         strcpy(str_tujuan2, str_sumber);

                         /* Menampilkan string hasil penyalinan */
                         printf(“str_tujuan1  :  %s\n”,  str_tujuan1);
                         printf(“str_tujuan2 : %s\n”, str_tujuan2);

                         /* Berikut ini contoh penggunaan strcpy yang SALAH */
                         /* Melakukan penyalinan dari str_sumber ke str_tujuan3 tanpa
                            alokasi str_tujuan3 */

                         /*  strcpy(str_tujuan3,  str_sumber);  */                 /* SALAH */

                                                          134
   133   134   135   136   137   138   139   140   141   142   143