Я создаю программу, которая должна создать структуру списка людей, введенных пользователем; единственная проблема, с которой я столкнулся, - это ввести пользовательские входные данные в текстовый файл. Кто-нибудь знает, как это сделать? Вот код:Пользовательский ввод в файл
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct person{
char name[20];
int age;
struct person *next_ptr;
} PERSON;
int main (void){
struct person PERSON;
FILE *fp;
char ans, ch;
int ppl=0;
fp=fopen("person_struct", "w");
if(fp != NULL){
while(ppl<25){
printf("Would you like to add a person to the list? [y/n] ");
scanf("%c", &ans);
if(ans == 'y') {
printf("\nEnter a name:\n");
scanf("%s", PERSON.name);
fprintf(fp, "%s",PERSON.name);
printf("\nEnter age:\n");
scanf("%i", &PERSON.age);
fprintf(fp, " %i\n", PERSON.age);
}
else {
ppl=25;
}
ppl++;
}
fclose(fp);
}
printf("\n\n\n");
system("pause");
return 0;
}
... и почему требуется амперсанд? Если вы собираетесь это объяснить, убедитесь, что вы полностью объяснили это, чтобы люди не путались и начали добавлять амперсанды до PERSON.name в 'scanf («% s », PERSON.name);', который уже указатель.Менее излишним способом сделать это будет ссылка на [руководство scanf] (http://pubs.opengroup.org/onlinepubs/007904975/functions/fscanf.html) и спросить: «Какой тип соответствует«% i 'спецификатор формата?". – Sebivor
Все еще не работает; когда я добавил амперсанд, программа разбилась после ввода возраста. – user2184761
@modifiablelvalue Да, вы правы Я должен добавить это важно здесь –