storing values in typedef struct error.
"racqueldesign" <[email protected]>
| Newsgroups | gmane.comp.hardware.rabbit-semiconductor |
|---|---|
| Message-ID | <[email protected]> |
Hi,
Whenever I store in string in a struct it store correctly; however, if try to store another string in another variable it also store correctly but the first storage variable now contain both strings.
If I continue storing strings to other variable in the struct previous variables are modified(added) to have this new string. For example:
typedef struct{
unsigned char mc1[8];
unsigned char mc2[8];
unsigned char mc3[8];
unsigned char mc4[8];
unsigned char mc5[8];
unsigned char mc6[8];
unsigned char mc7[8];
unsigned char mc8[8];
unsigned char mc9[8];
unsigned char mc10[8];
unsigned char pmcbindid[8];
unsigned char pmcdump[63];
unsigned char pmckey[16];
unsigned char pmcen;
}mc_t;
mc_t device;
main() {
unsigned char InBuffer[255];
unsigned char *src;
signed char msg_index;
...
src = InBuffer + Tokens[msg_index+4].start;
_f_strncpy(device.mc1,src, 8);
_f_strncpy(device.mc2,src, 8);
_f_strncpy(device.mc3,src, 8);
_f_strncpy(device.mc4,src, 8);
_f_strncpy(device.mc5,src, 8);
_f_strncpy(device.mc6,src, 8);
_f_strncpy(device.mc7,src, 8);
_f_strncpy(device.mc8,src, 8);
_f_strncpy(device.mc9,src, 8);
_f_strncpy(device.mc10,src, 8);
//test only
printf("\n mc1 = %s \n mc2 = %s \n mc3 = %s \n mc4 = %s \n mc5 = %s \n mc6 = %s \n mc7 = %s \n mc8 = %s \n mc9 = %s \n mc10 = %s\n",device.mc1,device.mc2,device.mc3,device.mc4,device.mc5,device.mc6,device.mc7,device.mc8,device.mc9,device.mc10);
}
Output after each storage:
1st.
==============
mc1 = 12345678
mc2 =
mc3 =
mc4 =
mc5 =
mc6 =
mc7 =
mc8 =
mc9 =
mc10 =
2nd
==========================
mc1 = 1234567812345678
mc2 = 12345678
mc3 =
mc4 =
mc5 =
mc6 =
mc7 =
mc8 =
mc9 =
mc10 =
3rd
==========================
mc1 = 123456781234567812345678
mc2 = 1234567812345678
mc3 = 12345678
mc4 =
mc5 =
mc6 =
mc7 =
mc8 =
mc9 =
mc10 =
4th
==========================
mc1 = 12345678123456781234567812345678
mc2 = 123456781234567812345678
mc3 = 1234567812345678
mc4 = 12345678
mc5 =
mc6 =
mc7 =
mc8 =
mc9 =
mc10 =
An so on. Why are current strings adding to previous variables? Also if I was to store another string at device.mc2, device.mc3 is now NULL.