В моем коде у меня есть 2 структуры с именами villa
и apartment
. У них есть члены типа char*
. Когда в моей записи void я получаю от пользователя другие части структур, такие как villa1.price
(который является float), он работает, но когда дело доходит до char*
, я не могу читать строки, используя scanf("%s",&villa1.city
), и поэтому я использовал другой массив символов с именем v1
, чтобы получить информацию от пользователей и затем присвоить ее Villa1.city с помощью villa1.city=a1
.
Это сработало впервые, но я хочу создать связанный список. Первый раз, когда я отправляю villa1.city
на insertFirstVilla
, чтобы добавить это в связанный список, он работает, но когда я добавляю второй узел, villa1.city
в первом узле теряется, и это происходит каждый раз, когда я добавляю новый узел.
Как я могу получить данные от пользователя, такие как villa1.price
, или если невозможно скопировать их, чтобы данные оставались безопасными, когда я добавляю второй узел в свой список. Я публикую часть своего кода для villa
, но код такой же для apartment
.
struct villa
{
float built;
float garden;
float price;
int floors;
char* city;
char* ST;
char* alley;
char* postal_code;
}villa1;
struct nodev
{
villa info;
nodev* next;
}*headv = NULL;
void insertFirstvilla(float built, float garden,float price,int floor, char*city) {
nodev* link = (nodev*)malloc(sizeof(nodev));
link->info.built = built;
link->info.garden = garden;
link->info.price = price;
link->info.floors = floor;
link->info.city = city;
link->next = headv;
headv = link;
}
void record()
{
char a;
printf("is the building apartment? (y/n):");
scanf("%c", &a);
char a1[100];
char v1[100];
if (a == 'y')
{
/* printf("enter apartment features:");
printf("\nenter built area:");
scanf("%f", &apart.built);
printf("\nenter basic price:");
scanf("%f", &apart.price);
printf("\nenter floors number:");
scanf("%d", &apart.floor_no);
printf("\ndoes apartment have elavator(if there is no elavotor enter zero else enter one):");
scanf("%d", &apart.elevator);
printf("\nenter city:");
scanf("%s", &a1);
apart.city = a1;
insertFirstapartment(apart.built, apart.price, apart.floor_no, apart.elevator,apart.city);
writetofilea(apart.built, apart.price, apart.floor_no, apart.elevator, apart.city);*/
}
else if (a == 'n')
{
printf("enter villa features:");
printf("\nenter built area:");
scanf("%f", &villa1.built);
printf("\nenter garden area:");
scanf("%f", &villa1.garden);
printf("\nenter basic price:");
scanf("%f", &villa1.price);
printf("\nenter floors number:");
scanf("%d", &villa1.floors);
printf("\nenter city:");
scanf("%s", &v1);
apart.city = v1;
insertFirstvilla(villa1.built, villa1.garden, villa1.price, villa1.floors, villa1.city);
writetofilev(villa1.built, villa1.garden, villa1.price, villa1.floors, villa1.city);
}
getchar();
}
int main()
{
int t = 0;
while (t<4)
{
record();
t++;
}
}