Вы можете мне помочь? У меня проблема с char* station;
, когда я заполняю пробелы, все в порядке, но когда я с printf("%d)Input its stations: ",i+1);
. Это проблема, я имею в виду: я вхожу в chech-joch-chor-dsh-dsh
, но мне нужно ввести chech joch chor dsh dsh
(это имена станций, это пример). Так оно печатает ТОЛЬКО ПЕРВОЕ СЛОВО, я не знаю почему .. проверьте это, пожалуйста ... (я понимаю, что мне нужно освободить то, что я сделал). Пожалуйста, объясните, почему это так, почему первый .. дать мне подсказку ..Строение и массив символов
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
typedef struct info_bus_{
int number;
int begin;
int end;
char* stations;
int time_working;
}info_bus;
int main()
{
info_bus *b=NULL;
int i,n;
char buffer[128];
printf("How many buses u have: ");
scanf("%d",&n);
b=(info_bus *)malloc(n*sizeof(info_bus));
for(i=0;i<n;i++){
printf("Input the number of a bus: ");
scanf("%d",&(b+i)->number);
printf("%d)Input when it starts to work: ",i+1);
scanf("%d",&(b+i)->begin);
printf("%d)Input when it finishes to work: ",i+1);
scanf("%d",&(b+i)->end);
printf("%d)Input its stations: ",i+1);
scanf("%127s", buffer);
b[i].stations = (char*) malloc(strlen(buffer) + 1);
strcpy(b[i].stations, buffer);
printf("Input time working: ");
scanf("%d",&(b+i)->time_working);
}
for (i=0;i<n;i++){
printf("\n[%d].the number of a bus: %d",i+1,b->number);
printf("\n[%d]. Begin at: %d",i+1,b->begin);
printf("\n[%d]. Finishes at: %d",i+1,b->end);
printf("\n[%d]. Stations: %s",i+1,b->stations);
printf("\n[%d]. Time working: %d",i+1,b->time_working);
printf("\n");
}
return 0;
}
но когда я использую gets()
это:
'% s'' scanf' читается как разделитель в пространстве. Поэтому он не содержит пробелов в содержимом. – BLUEPIXY
@ BLUEPIXY как это исправить? –
См. Также [Почему функция get настолько опасна, что ее нельзя использовать?] (Http://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous-that-it- должен быть не использован) – e0k