我正在编写一个代码,该代码使用一个函数返回指向结构的指针,该结构是动态分配的。但是,我的代码没有读取字符串。当我运行它时,它只跳了“类型名称”部分,键入了年龄,并显示了年龄,但没有显示任何名称。奇怪的是,当我使用scanf读取字符串时,代码可以工作,但gets或fgets却没有。谁能帮我吗?预先感谢。
#include <stdio.h>
#include <stdlib.h>
struct details
{
char name[100];
int age;
};
struct details * details_pointer(int n)
{
struct details *pointer = (struct details *) malloc (n*sizeof(struct details));
for (int i=0; i<n; i++)
{
printf("Student %d:\n",i);
printf("name:\n");
scanf("%s",pointer[i].name);
//gets(pointer[i].name); not working
//fgets(pointer[i].name,100,stdin); not working
printf("age:\n");
scanf("%d",&pointer[i]. age);
}
return pointer;
}
int main()
{
int n;
printf("Type the number of persons:\n");
scanf("%d",&n);
struct details *student = details_pointer(n);
for (int i=0; i<n; i++)
{
printf("\nName: %s",(*(student+i)).name);
printf("Age: %d\n",(*(student+i)).age);
}
free(student);
system("pause");
return 0;
}