C语言,错哪里了啊?

来源:百度知道 编辑:UC知道 时间:2024/05/14 18:48:51
输出3个工人的数据,工号,姓名,电话号码.
(输入,输出用函数调用.不能用指针..)

在tc++3.0下,输出2次第一个数据,再输出第2个,没有输出第3个.
在win-tc 下,输出是乱码.

#include <stdio.h>
struct worker
{
int num;
char name[10];
long phone;
};

struct worker ru(struct worker a[])
{
int i;
for(i=0;i<3;i++)
scanf("%d %s %ld",&a[i].num,a[i].name,&a[i].phone);

return a[0];
}

void list(struct worker a[])
{
int i;
for(i=0;i<3;i++)
printf("%d %s %ld\n",a[i].num,a[i].name,a[i].phone);
}

void main()
{
struct worker a[3];
struct worker b;
b=ru(a);
list(&b);
}

#include <stdio.h>
struct worker
{
int num;
char name[10];
long phone;
};

struct worker *ru(struct worker a[])
{
int i;
for(i=0;i<3;i++)
scanf("%d %s %ld",&a[i].num,a[i].name,&a[i].phone);

return a;
}

void list(struct worker a[])
{
int i;
for(i=0;i<3;i++)
printf("%d %s %ld\n",a[i].num,a[i].name,a[i].phone);
}

void main()
{
struct worker a[3];
struct worker *b; /*要用指针*/
b=ru(a);
list(b);
}

b你实列的不是一个数组

这段程序应该没有问题的,你输入的时候应该按照"%d %s %ld"的格式输入,中间的空格不能省也不能多,每输入完一条记录 回车,再输入下一条

1 nihao 1234
2 wohao 121211
3 dajiahao 13321455
1 nihao 1234
1 nihao 1234
2 wohao 121211
Press any key to continue
这是我得到的结果

struct worker ru(struct worker a[]) 这个函数要改一下,不要直接返回结构体struct worker对象,这样做会导致复制出一个新的struct wo