Занести строку с пробелами в поле структуры - C (СИ)
Формулировка задачи:
Собственно вопрос в названии темы. Как сделать так, чтобы вводимая строка с пробелами, нормально заносилась в поле структуры?! Вот написал небольшую программу на ввод/вывод массива структур "билеты":
Но почему, когда в поле Tickets[].name вводится строка с пробелами, то программа начинает работать некорректно?! Пожалуйста, подскажите как избежать етого.
#include <stdio.h> int main(int argc, char *argv[]) { typedef struct { char name[31]; char date[10]; char times[10]; int row; int place; }Ticket; int q; printf("input the initial quantity of tickets:\n"); scanf("%d",&q); Ticket Tickets[q]; printf("input information about tickets:\n"); for (int i=0;i<q;i++)//input of massiv {printf("input information about %d ticket:\n",i+1); printf("name of show: ");scanf("%s",&Tickets[i].name); printf("date of show [input format: DD.MM.YYYY]: ");scanf("%s",&Tickets[i].date); printf("time of show: ");scanf("%s",&Tickets[i].times); printf("number of row: ");scanf("%d",&Tickets[i].row); printf("number of place: ");scanf("%d",&Tickets[i].place);} printf("\n"); for (int i=0;i<q;i++)//output of massiv {printf("information about %d ticket:\n",i+1); printf("name of show: ");printf("%s",Tickets[i].name);printf("\n"); printf("date of show: ");printf("%s ",Tickets[i].date);printf("\n"); printf("time of show: ");printf("%s ",Tickets[i].times);printf("\n"); printf("number of row: ");printf("%d ",Tickets[i].row);printf("\n"); printf("number of place: ");printf("%d ",Tickets[i].place);printf("\n"); printf("\n");} return 0; }
Решение задачи: «Занести строку с пробелами в поле структуры»
textual
Листинг программы
#include <stdio.h> int main(int argc, char *argv[]) { typedef struct { char name[31]; char date[10]; char times[10]; int row; int place; }Ticket; int q=0; printf("input the initial quantity of tickets:\n"); scanf("%d",&q); Ticket Tickets[q]; printf("input information about tickets:\n"); for (int i=0;i<q;i++)//input of massiv {printf("input information about %d ticket:\n",i+1); printf("name of show: ");fgets(Tickets[i].name,sizeof(Tickets[i].name),stdin); printf("date of show [input format: DD.MM.YYYY]: ");fgets(Tickets[i].date,sizeof(Tickets[i].date),stdin); printf("time of show: ");fgets(Tickets[i].times,sizeof(Tickets[i].times),stdin); printf("number of row: ");scanf("%d%*c",&Tickets[i].row); printf("number of place: ");scanf("%d%*c",&Tickets[i].place);} printf("\n"); for (int i=0;i<q;i++)//output of massiv {printf("information about %d ticket:\n",i+1); printf("name of show: ");puts(Tickets[i].name); printf("date of show: ");puts(Tickets[i].date); printf("time of show: ");puts(Tickets[i].times); printf("number of row: ");printf("%d ",Tickets[i].row);printf("\n"); printf("number of place: ");printf("%d ",Tickets[i].place);printf("\n"); printf("\n");} return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д