想顺利输入输出几个数据,下面错哪了?
本帖最后由 小黄练编程 于 2022-1-21 00:34 编辑#include<stdio.h>
main()
{
typedef struct stu{
int age;
char *name;
struct stu *next;
} ss;
ss s1,s2,*pp;
s1.next=&s2;
s2.next=NULL;
pp=&s1;
while(pp!=NULL)
{
printf("输入年龄和名字");
scanf("%d%c",pp->age,pp->name);
pp=pp->next;
}
pp=&s1;
while(pp!=NULL)
{
printf("%d\n%s\n",pp->age,pp->name);
pp=pp->next;
}
}
你的第一个while 循环结束条件是pp==NULL,所以永远不会进入第二个循环
你需要在第一个循环之前copy一下指针,第二个循环判断的时候判断你的copy指针,这样才能从头开始读
好久没碰C了,给不了代码,自己改一下吧 翼是孤独 发表于 2022-1-21 00:10
你的第一个while 循环结束条件是pp==NULL,所以永远不会进入第二个循环
你需要在第一个循环之前copy一下指 ...
这确实是个问题,不过前面连输入数据都不能全部输入,{:5_100:} 本帖最后由 jhq999 于 2022-1-21 07:55 编辑
现在循环条件没问题,pp不等于NULL继续循环,等于退出循环
scanf("%d%c",&pp->age,pp->name); jhq999 发表于 2022-1-21 07:51
现在循环条件没问题,pp不等于NULL继续循环,等于退出循环
没用啊 小黄练编程 发表于 2022-1-25 22:20
没用啊
第二次输入直接跳过了
小黄练编程 发表于 2022-1-25 22:52
第二次输入直接跳过了
scanf("%d%s",&pp->age,pp->name);
fflush(stdin);
本帖最后由 小黄练编程 于 2022-1-25 23:14 编辑
jhq999 发表于 2022-1-21 07:51
现在循环条件没问题,pp不等于NULL继续循环,等于退出循环
#include<stdio.h>
main()
{
typedef struct stu{运行结果:
int age;
char *name;
struct stu *next;
} ss;
ss s1,s2,*pp;
s1.next=&s2;
s2.next=NULL;
pp=&s1;
//printf("%p",&pp);
while(pp!=NULL)
{
//printf("%p",&pp);
printf("输入年龄和名字");
scanf("%d %c",&pp->age,&pp->name);
pp=pp->next;
printf("%p",&pp);
}
printf("\n\n");
printf("%p\n\n%p\n\n%p",&s1,&s2,&pp);
pp=&s1;//为了能顺利输出。
while(pp!=NULL)
{
printf("%d\n%s\n",pp->age,pp->name);
pp=pp->next;
}
}
运行结果:
输入年龄和名字18 和
0019FF14输入年龄和名字0019FF14
s1的地址0019FF24
s2的地址0019FF18
pp的地址0019FF14
Press any key to continue
jhq999 发表于 2022-1-25 23:06
为啥第一次输入与第二次输入 pp地址都一样,pp不是变换了吗 jhq999 发表于 2022-1-25 23:06
我加上确实能第二次输入,但输完就此完结了,后面输出都没就结束了{:5_100:} 本帖最后由 小黄练编程 于 2022-1-25 23:26 编辑
jhq999 发表于 2022-1-25 23:06
我感觉我理解错了,pp是来存地址的,只是存的地址变了,但pp地址一直没变。{:5_111:}
我按上面的{:5_100:}加上去了,貌似不能成功输出啊;{:5_111:} 本帖最后由 jhq999 于 2022-1-26 08:27 编辑
小黄练编程 发表于 2022-1-25 23:22
我感觉我理解错了,pp是来存地址的,只是存的地址变了,但pp地址一直没变。
我按上面的{:5_ ...
int main()
{
typedef struct stu{//运行结果:
int age;
char name; //////////////////注意指针只是让你找到东西的地址,而不是东西本身。
struct stu *next;
} ss;
ss s1,s2,*pp;
s1.next=&s2;
s2.next=NULL;
pp=&s1;
//printf("%p",&pp);
while(pp!=NULL)
{
//printf("%p",&pp);
printf("输入年龄和名字");
scanf("%d %s",&pp->age,pp->name);////////////////pp->name本来就是name这个字符串的指针不用再取指针
pp=pp->next;
// printf("%p",&pp);
}
printf("\n\n");
// printf("%p\n\n%p\n\n%p",&s1,&s2,&pp);
pp=&s1;//为了能顺利输出。
while(pp!=NULL)
{
printf("%d\n%s\n",pp->age,pp->name);
pp=pp->next;
}
return 0;
}
输入年龄和名字12 abc
输入年龄和名字 15 bvc
12
abc
15
bvc
页:
[1]