あなたは私を助けることができますか? char* station;
私は私のギャップを埋めるときに、everithingは問題ないですが、私が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()
を使用する場合には、次のとおりです。?
'scanf'の'%s'は、空白スペースのセパレータとして読み取ります。したがって、内容にはスペースは含まれません。 – BLUEPIXY
@BLUEPIXYどのように修正する必要がありますか? –
も参照してください[get関数はなぜ危険なので、使用しないのですか?](http://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous-that-it-使用するはずはありません) – e0k