Message Sebelumnya Diignore aja karena udah terkirim
sebelum selesai ditulis
Karena "D0D98021" dan "Arista" merupakan literal
string yang memiliki length constant maka statement
untuk mengassigment valuenya langsung seperti begitu
tidak bisa kalaupun mau harus memakai Pointer. Solusi
nya memakai function strcpy (#include "string.h")
Lihat Contoh di bawah :
- Dengan Array
struct SISWA {
char NIS[9];
// bukan char NIS[8] karena baca di Informasi Tambahan
char Nama[20];
JENIS_KELAMIN gender;
}A;
strcpy(&A.NIS[0],"D0D98021");
strcpy(&A.Nama[0],"Arista");
A.gender = Wanita;
- Dengan Pointer
struct SISWA {
char *NIS;
char *Nama;
JENIS_KELAMIN gender;
}A;
A.NIS="D0D98021"
A.Nama="Arista"
A.gender = Wanita;
Informasi Tambahan :
Untuk menampung nilai "D0D98021" (Length 8) dengan
char NIS[8] tidak tepat karena untuk membuat tempat
penyimpanan untuk sebuah string haruslah
Length Array = Length Karekter Maximum + 1. Kenapa
harus ditambah 1 karena itu untuk menampung karakter
terakhir '\0' sebagai penanda akhir sebuah string.
Array Index selalu dimulai dari 0
Contoh :
char NIS[9];
strcpy(&A.NIS[0],"D0D98021"); maka
NIS [0]='D'
NIS [1]='0'
NIS [2]='D'
NIS [3]='9'
NIS [4]='8'
NIS [5]='0'
NIS [6]='2'
NIS [7]='1'
NIS [8]='\0'
kalau strcpy(&A.NIS[0],"D0D9"); maka
NIS [0]='D'
NIS [1]='0'
NIS [2]='D'
NIS [3]='9'
NIS [4]='\0'
NIS [5]='\0'
NIS [6]='\0'
NIS [7]='\0'
NIS [8]='\0'
untuk contoh yang tidak tepat kalau
strcpy(&A.NIS[0],"D0D980211"); maka
NIS [0]='D'
NIS [1]='0'
NIS [2]='D'
NIS [3]='9'
NIS [4]='8'
NIS [5]='0'
NIS [6]='2'
NIS [7]='1'
NIS [8]='1'
maka NIS tidak menyimpan value '\0' maka waktu di
print akan tidak sesuai dengan yang diinginkan.
Maaf bila kepanjangan penjelasannya semoga tidak
tambah bingung.
--- Yanu Widodo <[EMAIL PROTECTED]> wrote:
> Assalamualaikum
> apa khabar men-teman ?
>
> gini nih, saya lagi belajar c++
> waktu saya coba ngompile source code berikut :
>
> 1 #include <iostream>
> 2
> 3 using namespace std;
> 4
> 5 enum JENIS_KELAMIN { Pria, Wanita };
> 6 int main() {
> 7
> 8 struct SISWA {
> 9 char NIS[8];
> 10 char Nama[20];
> 11 JENIS_KELAMIN gender;
> 12 } A;
> 13
> 14 A.NIS = "D0D98021";
> 15 A.Nama = "Arista";
> 16 A.gender = Wanita;
> 17
> 18 cout<<"NIS : "<<A.NIS<<endl;
> 19 cout<<"Nama : "<<A.Nama<<endl;
> 20 cout<<"Gender : "<<A.gender<<endl;
> 21
> 22 return 0;
> 23 }
>
>
> kok ada error spt berikut yak?
>
> # g++ test.cpp -o test
> test.cpp: In function `int main()':
> test.cpp:14: incompatible types in assignment of
> `const char[9]' to `char[8]'
> test.cpp:15: incompatible types in assignment of
> `const char[7]' to `char[20]'
>
>
> saya ngompile make
>
> # g++ --version
> g++ (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
> Copyright (C) 2002 Free Software Foundation, Inc.
> This is free software; see the source for copying
> conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS
> FOR A PARTICULAR PURPOSE.
>
>
> padahal syntaxnya udah sesuai referensi
> mohon pencerahan.
>
>
>
> salam,
>
> yanu
>
> --
> Berhenti langganan:
> [EMAIL PROTECTED]
> Arsip dan info: http://linux.or.id/milis
>
>
Send instant messages to your online friends http://uk.messenger.yahoo.com
--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis