【发布时间】:2015-01-11 11:54:05
【问题描述】:
int main()
{
int epilogi,n=1,x,i;
char temp[2];
list=malloc(n*sizeof(struct address));
printf("Lista taxidromikon dieuthinseon\n");
printf("1. Eisagogi stoixeion\n");
printf("2. Diagrafi stoixeion\n");
printf("3. Emfanisi listas\n");
printf("4. Eksodos\n\n");
printf("Epilekste dinontas dinontas ena arithmo apo to 1 eos to 4\n");
while (scanf("%d", &epilogi)!=4)
{
if (epilogi==1)
{
while (strcmp("n",temp))
{
printf("Dose onomateponimo, dieuthinsi, poli, xora kai taxidromiko kodika\n");
fgets(list[n-1].name,80,stdin);
fgets(list[n-1].addr,50,stdin);
fgets(list[n-1].city,50,stdin);
fgets(list[n-1].country,30,stdin);
scanf("%[^\n]%d", &list[n-1].code);
printf("------------------------------------\n");
printf("Thelete na eisagete allo stoixeio?(Pliktrologiste y gia nai n gia oxi)\n");
fgets(temp,2,stdin);
printf("\n");
if (strcmp("n",temp))
{
n=n+1;
list=realloc(list,n*sizeof(struct address));
}
}
[编辑] 好的,所以我解决了 90% 的问题。现在程序成功要求我输入所有 6 但不是临时字符串。那是因为最后一个 scanf 创建的缓冲区中有一个换行符。我怎样才能让 fgets 忽略它?
【问题讨论】:
-
fgets应该可以工作。显示你做了什么... -
请多显示几行代码
-
@ohyez96
temp第一次做什么? -
在这个程序中,我选择选项 1 来输入某人的信息(姓名、地址、城市、国家)。 temp 字符串用于询问用户是否要添加另一个
-
好的,我解决了主要问题。由于您所说的,它会正确扫描我的所有字符串,除了 temp。关键是我可以放一个 %[^\n] 并处理 scanf 的问题,但是我该如何处理 scanf 存储在缓冲区中的换行符?我将编辑帖子,以便每个人都可以看到新程序