OK, I created pointer of an array of structure of size 10; initialize it but when i print it is is only printing the last element for two of the members (sigName and rfConn). Can someone tell me what I am doing wrong? see code below as well as output.
Code:
// Rev 2: make fixes below:
#include <ansi_c.h>
#define MAX 10
char * strArry[MAX]; // strArry points to an array consisting of 10 strings
char * muxStr[100];
typedef struct
{
char* sigName;
char* rfConn;
int chan;
}mux;
mux *mTable[MAX];
// Function prototypes
int initArryIIS(char *p, int i);
int printArryIIS(char *p, int i);
int main(void)
{
int i;
char tempStr[20];
for(i=0; i<MAX; i++)
{ // note strArry[i] will have point to the address location of block of memory for 20 character size
strArry[i] = malloc(20 * sizeof (char)); // create block size MAX of memory for each string element i
}
for(i=0; i<MAX; i++)
{
mTable[i] = malloc(25 * sizeof(mux));
}
char *pTemp;
for(int n=0; n<MAX; n++)
{
pTemp = strArry[n]; // duplicate pointer (strArry) address
initArryIIS(pTemp,n); // initialize string pointer array
printArryIIS(pTemp,n); // print content of array which pointer sPtr points to
sprintf(tempStr,"REF_OUT%d\0",n);
mTable[n]->sigName = tempStr;
sprintf(tempStr,"J%d\0",n+1);
mTable[n]->rfConn = tempStr;
mTable[n]->chan = n+1;
}
printf("\n\nNo. NAME TYPE CH\n==========================\n");
for(i=0; i<MAX; i++)
{
printf("[%d] %9s %5s %4d\n", i, mTable[i]->sigName, mTable[i]->rfConn, mTable[i]->chan);
}
getchar();
return 0;
}
int initArryIIS(char *p, int i) // array size = 10 string elements in array
{
sprintf(p,"string%d\0",i); // init element i in string pointer array
return 0;
}
int printArryIIS(char *p, int i) // array size = 10 string elements in array
{
printf("[%-d] %-15s\n",i,p);
return 0;
}
Program OUTPUT:
[0] string0
[1] string1
[2] string2
[3] string3
[4] string4
[5] string5
[6] string6
[7] string7
[8] string8
[9] string9
No. NAME TYPE CH
================ (why isn't column NAME and TYPE showing duplicates and why no increment?)
[0] J10 J10 1
[1] J10 J10 2
[2] J10 J10 3
[3] J10 J10 4
[4] J10 J10 5
[5] J10 J10 6
[6] J10 J10 7
[7] J10 J10 8
[8] J10 J10 9
[9] J10 J10 10