The easiest way to do something like that is like Princeton suggested.
Code:
#include <stdio.h>
int main(void)
{
int x1 = 5, x2 = 3, x3 = 4;
char nameofint[3];
int i, uselessint;
struct
{
char *name;
int *pvar;
} map[] = { { "x1", &x1 }, { "x2", &x2 }, { "x3", &x3 } };
printf("Enter x1, x2, or x3: ");
fgets(nameofint, sizeof(nameofint), stdin);
nameofint[2] = '\0'; // Get rid of the \n
for(i = 0;i < 3;++i)
if(!strcmp(map[i].name, nameofint))
break;
if(i == 3)
{
puts("That variable name isn't recognized.");
exit(1);
}
uselessint = *map[i].pvar;
printf("uselessint is %d\n", uselessint);
return 0;
}
itsme:~/C$ ./map
Enter x1, x2, or x3: x1
uselessint is 5
itsme:~/C$ ./map
Enter x1, x2, or x3: x2
uselessint is 3
itsme:~/C$ ./map
Enter x1, x2, or x3: x3
uselessint is 4
itsme:~/C$ ./map
Enter x1, x2, or x3: foo
That variable name isn't recognized.
itsme:~/C$