I'm new to C and am attempting to accept a string from stdin and pass it as a void pointer to a struct (this is a requirement for the program) and then covert it back to a string again in order to print it to stdout.
I tried to print the string from inside a function (the struct was passed as a parameter to the function), but it kept printing out garbage, so I added a print statement in the main method itself to see if it would print garbage there too, and it is.
Here is the struct:
struct Params
{
int key;
void *value;
};
here's part of the main function:
int main(int argc, char *argv[])
{
//blah blah blah
else if (map.f_values == 's')
{
int key; // key will always be an int
printf("Enter a key: ");
fflush(stdin);
scanf("%d", &key);
char* value;
printf("Enter a value: ");
fflush(stdin);
scanf("%s", value);
printf("we got: %s\n", value); //prints correctly
struct Params call2Params = {key, value};
printf("the length of the string is %ld", strlen(call2Params.value));
printf("sending: %d, %s\n", call2Params.key, (char*)call2Params.value); //value prints garbage
}
}
Strange thing is, this works perfectly fine on my mac, but it prints garbage when I run it on a linux VM.
Please let me know if you know what's going on and how to fix it!