Re: C Toolbox: String Processing

ardiyan wrote:
mustofa wrote:

Header file: string.h
Nama fungsi: strncpy
Prototipe: char *strncpy(char *dest, const char *src, int n)
Kegunaan:
- menyalin n karakter string src ke dest.
- fungsi ini akan mengembalikan alamat string dest.

Salam sejahtera Pak Mustofa.

Mau tanya Pak mengenai fungsi string strncpy. Misal ada string =

data = "P123456789"

string tersebut ingin saya pecah menjadi 4 string, antara lain =

header = "P"
data1 = "123"
data2 = "456"
data3 = "789"

Maksud percobaan saya adalah Jika karakter pertama = "P", maka variabel data1, data2 dan data3 boleh ditampilkan. Dan Jika karakter pertama bukan "P", maka variabel data1, data2 dan data3 tidak boleh tampil.
Program yang sudah saya sebagai berikut :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
unsigned char data[10], data1, data2, data3;
int main()
{
scanf("%s",data);
strncpy(data1,&data[1],3);
strncpy(data2,&data[4],3);
strncpy(data3,&data[7],3);
printf("Data1 = %s\nData2 = %s\nData3 = %s\n",data1,data2,data3);
}

Tapi hasil eksekusi program saya, menghasilkan variabel yang nilainya tidak sesuai dengan yang saya harapkan, hasil program saya sebagai berikut :
misal diberi input "P123456789", akan menghasilkan output :

Data1 = 123456789
Data2 = 456789
Data3 = 789

Jadi hanya variabel data3 yang sesuai dengan keinginan saya.

Yang ingin saya tanyakan.
1. Apakah ada yang salah dengan coding atau algoritma saya?
2. Untuk mengecek kondisi huruf/karakter pertama, pakai fungsi apa Pak? Tipe data nya apa? Agar bisa saya olah menggunakan logika if, sehingga saya bisa mengatur variabel data berapa yang ingin saya tampilkan.

Terima kasih.

#include <stdio.h>
#include <string.h>
 
int main (void)
{
    char data[20], data1[4], data2[4], data3[4];
 
    if (scanf("%s", data) != EOF) {
        printf("%s\n", data);
 
        strncpy(data1, &data[1], 3);
        data1[3] = 0;
 
        strncpy(data2, &data[4], 3);
        data2[3] = 0;
 
        strncpy(data3, &data[7], 3);
        data3[3] = 0;
 
        printf("Data1 = %s\nData2 = %s\nData3 = %s\n", data1, data2, data3);
    }
 
    return(0);
}

27 (edited by ardiyan 04-07-2010 13:22:11)

Re: C Toolbox: String Processing

sarwoko wrote:
#include <stdio.h>
#include <string.h>
 
int main (void)
{
    char data[20], data1[4], data2[4], data3[4];
 
    if (scanf("%s", data) != EOF) {
        printf("%s\n", data);
 
        strncpy(data1, &data[1], 3);
        data1[3] = 0;
 
        strncpy(data2, &data[4], 3);
        data2[3] = 0;
 
        strncpy(data3, &data[7], 3);
        data3[3] = 0;
 
        printf("Data1 = %s\nData2 = %s\nData3 = %s\n", data1, data2, data3);
    }
 
    return(0);
}

Terima kasih Pak, sudah saya coba dan berhasil.
btw, arti dari EOF pada

if (scanf("%s", data) != EOF)

apa ya Pak?

Thanks.

Re: C Toolbox: String Processing

ardiyan wrote:
sarwoko wrote:
#include <stdio.h>
#include <string.h>
 
int main (void)
{
    char data[20], data1[4], data2[4], data3[4];
 
    if (scanf("%s", data) != EOF) {
        printf("%s\n", data);
 
        strncpy(data1, &data[1], 3);
        data1[3] = 0;
 
        strncpy(data2, &data[4], 3);
        data2[3] = 0;
 
        strncpy(data3, &data[7], 3);
        data3[3] = 0;
 
        printf("Data1 = %s\nData2 = %s\nData3 = %s\n", data1, data2, data3);
    }
 
    return(0);
}

Terima kasih Pak, sudah saya coba dan berhasil.
btw, arti dari EOF pada

if (scanf("%s", data) != EOF)

apa ya Pak?

Thanks.

EOF
atau silahkan cari di google

Re: C Toolbox: String Processing

para master sya mu tnya tetang bgaimana algoritma untuk membuat fungsi string replace,,
mohon pencerahannya para master soalnya sya ud coba buat tp gagal,,

Re: C Toolbox: String Processing

gakperluwong wrote:

para master sya mu tnya tetang bgaimana algoritma untuk membuat fungsi string replace,,
mohon pencerahannya para master soalnya sya ud coba buat tp gagal,,

Maksudnya bagaimana? Sudah coba menggunakan fungsi strcpy atau strncpy?

http://www.id-ddns.net/images/ddns-small.jpg