【发布时间】:2019-06-01 12:44:12
【问题描述】:
所以我想创建一个地址簿程序,我有以下代码:
#define MAX_VALUE_FOR_ARRAYS 1000
int i = 0 ;
int answer = 0 ;
int number_of_people = 0 ;
FILE* address_book = NULL ;
address_book = fopen("addressBook.txt", "w") ;
typedef struct People People ;
struct People
{
char f_name[MAX_VALUE_FOR_ARRAYS]
};
People *persons = NULL ;
printf("A D D R R E S S B O O K \n\n\n") ;
printf("1. Add a new contact \n") ;
printf("2. View all contacts \n") ;
printf("\nMake your choice : ") ;
while (answer < 1 || answer > 2)
{
printf("\nWrong input, try again ! : ") ;
scanf("%d", &answer) ;
}
if (answer == 1)
{
printf("How many contacts do you want to add ? : ") ;
scanf("%d", &number_of_people) ;
persons = malloc(number_of_people * sizeof(People) ) ;
if (persons == NULL)
{
printf("\nMemory allocation failed !") ;
}
for (i = 0; i < number_of_people; i++)
{
printf("Person %d ", (i+1)) ;
printf("Enter the first name : ") ;
fgets(persons[i].f_name, MAX_VALUE_FOR_ARRAYS, stdin) ;
if (address_book == NULL)
{
printf("\nFailed to open file ! ") ;
}
fputs(persons[i].f_name, address_book) ;
fputc('\n', address_book) ;
}
}
我的问题是程序不想存储名字(“fgets”调用行)。 它显示了 printf("请输入你的名字:") 中的内容; 并忽略以下行( fgets(persons[i].f_name..) , 之后直接进入程序结束 请帮忙
【问题讨论】:
-
好的,我明白了,谢谢
-
贴出的代码无法编译!您希望我们如何重现该问题,以便我们可以帮助您调试它。请发帖minimal reproducible example
标签: c arrays pointers filesystems