I define a struct data type:
typedef struct LinkNode LinkNode;
struct LinkNode {
char *name;
LinkNode *next;
};
And call it in main():
Example1:
int main()
{
LinkNode *pnode = (LinkNode *) malloc(sizeof(LinkNode));
scanf("%s", pnode->name);
...
free(pnode);
return 0;
}
It doesn't work, unless add one line: Example 2
int main()
{
LinkNode *pnode = (LinkNode *) malloc(sizeof(LinkNode));
pnode->name = (char *) malloc(sizeof(char));
scanf("%s", pnode->name);
...
free(pnode);
return 0;
}
But the following code works: Example 3
int main()
{
LinkNode *pnode = (LinkNode *) malloc(sizeof(LinkNode));
pnode->name = "Jim";
...
free(pnode);
return 0;
}
So what's the problem? I have been assigned memory to pnode, why scanf() doesn't work? I'm using VS2010. Thanks!