【发布时间】:2015-05-25 14:55:42
【问题描述】:
我想打印所有输入的元素。相反,我的代码将最近输入的元素打印两次。
这是我的代码:
#include<stdio.h>
void f(struct ar *a);
void d(struct ar *a);
struct ar
{
char name[50];
};
int main()
{
struct ar a;
f(&a);
d(&a);
}
void f(struct ar *a)
{
int i;
for(i=0;i<2;i++)
{
printf("enter name:");
gets(a->name);
}
}
void d(struct ar *a)
{
int i;
for(i=0;i<2;i++)
{
puts(a->name);
}
}
例如:
输入
name:john
name:kendall
输出
kendall
kendall
【问题讨论】:
-
您永远不能使用
gets(),而是使用fgets()。这就是 gcc 所说的 警告:`gets' 函数很危险,不应使用。 -
你需要创建一个链表。 Linked data Structure
-
所以在你的循环中你得到/打印
a->name两次而不移动它。那么你期望得到什么? -
@chengpohi 我不这么认为。