Memproses data string

string adalah kumpulan dari suatu karakter (char), selama dalam memprogram data string ini banyak kita temui selain dari data-data angka, karena itu untuk dapat benar-benar mengolah data string, menjadi data tipe lain (misalnya menjadi data integer) sangatlah penting, termasuk juga mengambil sebagian dari string tersebut untuk diolah menjadi data yang lain.

String

  • string adalah kumpulan char yang diakhiri dengan null ('\0')
  • nama string merupakan alamat elemen pertama string itu
  • untuk meminta masukkan gunakan perintah gets jangan scanf
  • Berikut cara deklarasi program
    • char nama[5]
    • artinya disini membuat variabel nama dengan nilai max 4 huruf
    • karena digit yang terakhir digunakan untuk kode null
  • untuk meminta masukkan gunakan gets
    • gets(nama);
  • untuk mencetak gunakan perintah cprintf
    • printf("nama siswa : %s \n\r",nama)
    • %s adalah format yang digunakan
    • \n adalah kode enter di cpp
  • berikut contoh program menggunakan string yang pertama

Beberapa Fungsi dari string

  • strcpy

    • berguna untuk mengisi suatu variabel string ke variabel yang lain
    • format: strcpy(variabel hasil, variabel asal)
    • contoh:
    • char asal[20] = "kapasan";
    • char hasil[20];
    • strcpy(hasil,asal);
    • maka isi dari hasil adalah kapasan;
  • strcmp

    • untuk mengecek apakah 2 variabel string itu isinya sama
    • bila hasilnya = 0, berarti sama, bila tidak sama dengan 0 artinya tidak sama
    • contoh:
    • char v1[20]= "kapasan";
    • char v2[20]= "kapasan;
    • strcmp(v1,v2);
  • strlen

    • mencari banyak huruf dalam suatu string
    • contoh:
    • char teks[] = "hello"
    • size_t banyak;
    • banyak = strlen(teks);
    • ingat NULL tidak termasuk
  • strncat

    • menambahkan sebagian string
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>

using namespace std;

void contoh41() {
  // proses input output string
  char nama[20],alamat[30],telp[12];

  printf("Nama  : ");gets(nama);   
  printf("Alamat: ");gets(alamat);
  printf("Telp  : ");gets(telp);

  printf(" Terima kasih, %s \n anda ada di %s \n dan telpon anda ada di %s  ",nama,alamat,telp);  // output
}

void contoh42() {
  // proses input output string
  char nama[20],alamat[30],kota[12];
  char nama_lain[20],kota_lain[12];
  size_t panjang;

  strcpy(nama,"Yudi");
  strcpy(nama_lain,nama);
  printf("isi dari variabel nama: %s, nama_lain %s \n",nama,nama_lain);
  printf("hasil perbandingan : %d , karena isinya sama\n",strcmp(nama,nama_lain));
  panjang = strlen(nama);
  printf("Banyak huruf adalah: %d \n",panjang);
  strncat(nama,nama_lain,3);
  printf("isi dari variabel nama saat ini adalah %s, karena ada penambahan 3 huruf \n",nama);
}

void contoh43() {
  // konversi tipe dari string ke angka
  // harus include stdlib.h

  char nilai_dalam_string[10];
  int b1; float b2; long b3;

  printf("masukkan angka pecahan  : ");gets(nilai_dalam_string);
  b1 = atoi(nilai_dalam_string);  // ascii to int
  b2 = atof(nilai_dalam_string);  // ascii to float
  b3 = atol(nilai_dalam_string);  // ascii to long

  printf("isi dari variabel nilai_dalam_string: %s \n",nilai_dalam_string);
  printf("nilai b1: %d \n",b1);
  printf("nilai b2: %f \n",b2);
  printf("nilai b3: %d \n",b3);

  printf("bila di konversikan kembali ke string \n");
  itoa(b1,nilai_dalam_string,10);  // int to ascii , 10 disini maksudnya bilangan desimal
  printf("nilai string dari b1 (desimal): %s \n",nilai_dalam_string);
  itoa(b1,nilai_dalam_string,2);  // int to ascii , 10 disini maksudnya bilangan desimal
  printf("nilai string dari b1 (binary) : %s \n",nilai_dalam_string);
  gcvt(b2,3,nilai_dalam_string);  // 3 disini maksudnya jumlah bilangan
  printf("nilai string dari b2 (float ) : %s \n",nilai_dalam_string);


}

void contoh44() {
  // aplikasi 1
  // cek suatu string palindrome

  char nama[30];
  int i,p,separuh_p,flag;

  printf("program test palindrome");
  printf("masukkan nama yang ingin di test: ");gets(nama);
  flag = 1;
  p = strlen(nama);
  separuh_p = p / 2;
  for(i=0;i < separuh_p-1;i++)
    {
        if(nama[i]!=nama[p-i-1]) {
      flag=0;
          break;
      }    
    }
    if (flag==1) {
        printf("\n Palindrome.");
    }
    else
    {
     printf("\n Bukan Palindrome.");
    }
}

main() {
  system("cls"); // membersihkan layar

  contoh44(); 

  getch();
  return 0;
}