Код ниже запросит ввод и должен его распечатать.
Однако я столкнулся с несколькими проблемами.
Сохранение данных и чтение данных (программирование на С)
Проблемы
- программа перестает работать после того, как я подтвердить ввод.
- , когда предполагается напечатать вход, вместо этого распечатывает странные символы.
Вопросы:
Как напечатать целое значение переменной?
Для экс: - Когда я вход "John Lemon", когда он просит "Имя:".
Я мог бы напечатать "John Lemon" вместо "John".После печати первого значения переменной, как я могу продолжить печать второго значения и третьего значения переменной целиком?
Для экс:
Пример вывода
Имя: John Lemon
Возраст: 21
Адрес: 41, 2/2 Apple, Street
Что я могу сделать устранить эту проблему?
Если возможно, объясните, пожалуйста, в терминах непрофессионала, поскольку я новичок в программировании на С.
Извините, если это выглядит грязно. Я старался изо всех сил держать его как можно проще.
#include<stdio.h>
char fname[]={"guest.dat"};
struct text
{
char name;
int age;
char address;
};
void printing()
{
struct text t1;
FILE *fp;
fp=fopen(fname,"r");
printf("\nName: %c",t1.name);
printf("\nAge: %d",t1.age);
printf("\nAddress: %s",t1.address);
}
int main()
{
FILE *fp;
int choice;
struct text t1;
fp=fopen(fname,"a+");
fread(&t1,sizeof(t1),1,fp);
printf("\nPlease enter name: ");
scanf("%c",&t1.name);
fflush(stdin);
printf("\nPlease enter age: ");
scanf("%d",&t1.age);
fflush(stdin);
printf("\nPlease enter address: ");
scanf("%s",&t1.address);
fflush(stdin);
printf("\nConfirm? (Y/N): ");
scanf("%c",&choice);
if (choice == 'y' | choice == 'Y')
{
fp=fopen(fname,"a+");
fwrite(&t1,sizeof(t1),1,fp);
fclose(fp);
fflush(stdin);
system("cls");
printing();
}
else if (choice == 'n' | choice == 'N')
{
fflush(stdin);
system("cls");
printing();
}
else
fflush(stdin);
system("cls");
printf("Please try again!");
system("pause");
}
По какой-то причине начинающие учебные пособия всегда начинаются с примеров, требующих интерактивных диалогов с пользователем через scanf. scanf немного сложно использовать, и не сразу понятно, почему это сложно. –
«char» тип в C является единственным символом, перед тем как закончить этот код, вы должны посмотреть, как работает массив/указатель char, а что «&» в C – mou