Занести строку с пробелами в поле структуры - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Собственно вопрос в названии темы. Как сделать так, чтобы вводимая строка с пробелами, нормально заносилась в поле структуры?! Вот написал небольшую программу на ввод/вывод массива структур "билеты":
#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;
}
Но почему, когда в поле Tickets[].name вводится строка с пробелами, то программа начинает работать некорректно?! Пожалуйста, подскажите как избежать етого.

Решение задачи: «Занести строку с пробелами в поле структуры»

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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы