I've come a cross a problem where, when I'm using scanf to store a string into a char pointer, I have 3 inputs - name, surname, and age, that surname's last char value get replaced by age here's the output to better explain.
Q-riosity v0.0.1
Enter your name
Evgeny
Enter your surname
Danilenko
Enter your age
22
Evgeny Danilenk22, you are 22 years old
Here's the code
void getUserDetails(char** value)
{
char *key[3] = {"name", "surname", "age"};
int keySize = sizeof(key)/sizeof(char*);
printf("Q-riosity v0.0.1\n");
int i = 0;
for(i = 0; i<keySize; i++)
{
printf("Enter your %s \n", key[i]); // name, surname, age
scanf("%s", &value[i]); //stores value at index i
}
printf("%s, %s, you are %s years old\n", &value[0], &value[1], &value[2]);
}
EDIT
Enter your name
Evgeny
Enter your surname
Danilenko
Enter your age
22
Segmentation fault
int main(int argc, char* argv[])
{
char *key[3] = {"name", "surname", "age"};
int keySize = sizeof(key)/sizeof(char*);
printf("Q-riosity v0.0.1\n");
char* value[keySize];
int i = 0;
for(i = 0; i<keySize; i++)
{
printf("Enter your %s \n", key[i]);
scanf("%s", value[i]);
}
for(i = 0; i<keySize; i++)
{
printf("%s : %s \n", key[i], value[i]);
}
return 0;
}