|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 是小利同学 于 2023-6-4 23:56 编辑
【 】求助:下面这段代码时我看教学视频敲得,但是我的无法正常运行
输入两次不结束运行而且shell在等待我的输入,需要我输入多次才可以结束运行,输出结果为最后的输入结果
ps:老师的可以正常运行
【我的编译器是】Dev-C++ 5.11 我用网络上在线编译器也出现同样的问题
请各位鱼友帮忙答疑
【最后的最后】本主题共10分奖励贴,每人可获得一次,中奖率100%哦!!
- #include<stdio.h>
- struct point {
- int x;
- int y;
- };
- struct point *getStruct(struct point *);
- void print(const struct point *);
- void output(struct point);
- int main(int argc,char const *argv[]){
-
- struct point y = {0,0};
- getStruct(&y);
- print(getStruct(&y));
-
- output(*getStruct(&y));
- return 0;
- }
- struct point *getStruct(struct point *p){
- scanf("%d",&p->x);
- scanf("%d",&p->y);
- return p;
- }
- void print(const struct point *p){
- printf("%d,%d",p->x,p->y);
- }
- void output(struct point p){
- printf("%d %d",p.x, p.y);
- }
复制代码
你的问题是你的 getStruct 函数每次都调用 scanf 来获取输入。所以在 main 函数中,你每次调用 getStruct 都需要输入两次。
- struct point y = {0,0};
- getStruct(&y); // 需要输入两次
- print(getStruct(&y)); // 需要输入两次
- output(*getStruct(&y)); // 需要输入两次
复制代码
这意味着你总共需要输入 6 次。但是,你的意图应该是只输入一次,然后使用这个输入的结果。
解决这个问题的一种方法是只在 main 函数中调用 getStruct 一次,然后将结果存储在变量中,像这样:
- int main(int argc,char const *argv[]){
- struct point y = {0,0};
- struct point *p = getStruct(&y); // 输入两次
- print(p); // 使用先前输入的结果
- output(*p); // 使用先前输入的结果
- return 0;
- }
复制代码
这样你只需要输入两次(一次输入 x ,一次输入 y )。这两个值会存储在 struct point 中,并在后续的 print 和 output 调用中使用。
|
|