【发布时间】:2017-05-10 00:21:11
【问题描述】:
你能帮帮我吗?
我对char* station; 有疑问
当我填补我的空白时,一切都很好,但是当我和printf("%d)Input its stations: ",i+1); 在一起时。这是一个问题,我的意思是:我输入 chech-joch-chor-dsh-dsh 但我需要输入 chech joch chor dsh dsh(这些是电台名称,这是一个示例)。所以它打印 ONLY THE FIRST WORD,我不知道为什么..请检查一下...(我知道我需要释放我所拿的东西)。请解释一下为什么会这样,为什么是第一个?..给我一个提示..
#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;
}
【问题讨论】:
-
%sofscanf读作空白分隔符。所以它在内容中不包含空格。 -
@BLUEPIXY 应该如何解决?
-
scanf("%127s", buffer);-->scanf(" %127[^\n]%*c", buffer); -
@BLUEPIXY 谢谢,它帮助了我:) 我明白你做了什么
标签: c string struct malloc buffer