Re: C Toolbox: String Processing
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 = 789Jadi 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);
}