You are probably experiencing a case of buffer overrun, but it is hard to tell because you have left out certain information.
For example
* How is the variable commands declared?
It is probably an array of char*, but you need to show that?
Also with this statement, you are not assigning the value of commands[1], but the address.
fnow.Name = commands[1];
Try either to allocate memory for Name
fnow.Name = (char*)calloc(strlen(commands[1]) + 1, sizeof(char));
strcpy(fnow.Name, commands[1]);
Don't forget to use free(fnow.Name) when you are done.
You can also change from
char* Name to char Name[25]
This is a very simple test to see if you suffer from buffer overrun.