I have a function in one of my programs that picks a random state from a list. It then puts this random state in a structure array. However the name selected from the list does not match the name that winds up in my array structure. The following is not snipped from my code, since I'm using multifiles, so I just retyped it all in one program so it could be copied and pasted to your compiler if you wish to try it. The results of this program are the same as mine though. Basically, I'd expect the output of the last two printf() functions to come out the same for each loop.
#include<time.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h> // data list of stateschar datalist[10][20]=
{
"complete",
"considering",
"active",
"disabled",
"obsolete",
"halted",
"expanded",
"rerouted",
"initialized",
"reworked"
};
// structuresstruct data_set
{
char status[20];
int priority;
int complexity;
};
int main()
{
// declarationsstruct data_set set1[5];
int random_number;
// implementation
srand(time(NULL)); // for random picking from data listfor(int i=0;i<5;i++)
{
// get a random state from a list of 10
random_number=rand()%10;
printf("Random Number: %d\n",random_number);
printf("Random Name picked from list: %s\n",datalist[random_number]);
strcpy(set1[i].status,&datalist[random_number][20]);
printf("Random Name stored in set1: %s\n",set1[i].status);
}
getch();
}
Thanks, that fixed it. I was just under the impression that since it was an array of strings that I needed the address operator in the strcpy() function, and the only way I could get that to work was add the [20].
Now I think I get it, I was basically offsetting the location I was pointing to by 20. Here I was assuming I needed to put the length of each string in the brackets, because I think empty brackets caused an error. I Figured it needed to know how big of a string it was copying.
No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.