#include <curses.h>
main()
{
int x=1,y=5;
initscr();
move(20,20);
getyx(stdscr,y,x); (1)
printw("now location is %d,%d",x,y); (2)
refresh();
endwin();
}
在(1)句用的是值传递,但(2)句时x,y的值都变成了20。
请问有谁能指教getyx这个函数是如何改变x,y的值的?!
14 个解决方案
#1
这么奇怪?关注!!!!!
#2
可能的情况是:
#define getyx(window *scr,int y,int x) y=gety(scr),x=getx(scr)
我不知道你用的什么编译器,瞎猜的。
#define getyx(window *scr,int y,int x) y=gety(scr),x=getx(scr)
我不知道你用的什么编译器,瞎猜的。
#3
哈哈,老兄真会想办法^_^
#4
有getyx()这样的函数吗?估计被你猜对了。
函数名: getx
功 能: 返回当前图形位置的x坐标
用 法: int far getx(void);
而且当前的图形位置的坐标为(20,20),这就对了嘛!
函数名: getx
功 能: 返回当前图形位置的x坐标
用 法: int far getx(void);
而且当前的图形位置的坐标为(20,20),这就对了嘛!
#5
你是如何执行的,我怎么不可以?报告:undefined first referenced
symbol in file
initscr32 new.o
stdscr new.o
wmove new.o
getcury new.o
getcurx new.o
printw new.o
wrefresh new.o
endwin new.o
i386ld fatal: Symbol referencing errors. No output written to a.out
(SCO UNIX 5.5)
symbol in file
initscr32 new.o
stdscr new.o
wmove new.o
getcury new.o
getcurx new.o
printw new.o
wrefresh new.o
endwin new.o
i386ld fatal: Symbol referencing errors. No output written to a.out
(SCO UNIX 5.5)
#6
#include <stdio.h>
#include <curses.h>
main()
{
int x=1,y=5; (1)
initscr();
move(20,20); (2)
getyx(stdscr,y,x); (3)
printw("now location is %d,%d",x,y); (4)
refresh();
endwin();
}
看样你对move(),getyx()不待了解(1)中虽定义x,y的值,但是move()函数江光标的位置移到了(20,20)这点上,所以当你用getyx()时x,y的值就变了.
NAME
getyx - get cursor coordinates
SYNOPSIS
#include <curses.h>
void getyx(WINDOW *win, int y, int x);
NAME
move, wmove - window cursor location functions
SYNOPSIS
#include <curses.h>
int move(int y, int x);
int wmove(WINDOW *win, int y, int x);
DESCRIPTION
The move() and wmove() functions move the cursor associated with the current or specified window to (y, x) relative to the window's origin. This function does not move the terminal's cursor until the next refresh operation.
RETURN VALUE
Upon successful completion, these functions return OK. Otherwise, they return ERR.
ERRORS
No errors are defined.
#include <curses.h>
main()
{
int x=1,y=5; (1)
initscr();
move(20,20); (2)
getyx(stdscr,y,x); (3)
printw("now location is %d,%d",x,y); (4)
refresh();
endwin();
}
看样你对move(),getyx()不待了解(1)中虽定义x,y的值,但是move()函数江光标的位置移到了(20,20)这点上,所以当你用getyx()时x,y的值就变了.
NAME
getyx - get cursor coordinates
SYNOPSIS
#include <curses.h>
void getyx(WINDOW *win, int y, int x);
NAME
move, wmove - window cursor location functions
SYNOPSIS
#include <curses.h>
int move(int y, int x);
int wmove(WINDOW *win, int y, int x);
DESCRIPTION
The move() and wmove() functions move the cursor associated with the current or specified window to (y, x) relative to the window's origin. This function does not move the terminal's cursor until the next refresh operation.
RETURN VALUE
Upon successful completion, these functions return OK. Otherwise, they return ERR.
ERRORS
No errors are defined.
#7
又学到东西了
#8
变色鱼,你好请这样编译:
cc ... -lcurses
cc ... -lcurses
#9
jackeyjia:
我想知道的是内部机制,即getyx这个函数是如何将x,y的值改变的?
按理,以值传递的参数在函数内部是不能改变值的,正常的应该是传地址。
请指教!
我想知道的是内部机制,即getyx这个函数是如何将x,y的值改变的?
按理,以值传递的参数在函数内部是不能改变值的,正常的应该是传地址。
请指教!
#10
我支持jackeyjia() 的说法
#11
不是传值,是赋值
#12
getyx(win,y,x) 得到目前光标的位置
(请注意! 是 y,x 而不是 &y,&x )
(请注意! 是 y,x 而不是 &y,&x )
#13
getyx(win,y,x) 得到目前光标的位置
(请注意! 是 y,x 而不是 &y,&x )
(请注意! 是 y,x 而不是 &y,&x )
#14
赵云:
你说对了,谢谢!
原型是:
#define getyx(win,y,x) ((y) = getcury(win), (x) = getcurx(win))
你说对了,谢谢!
原型是:
#define getyx(win,y,x) ((y) = getcury(win), (x) = getcurx(win))
#1
这么奇怪?关注!!!!!
#2
可能的情况是:
#define getyx(window *scr,int y,int x) y=gety(scr),x=getx(scr)
我不知道你用的什么编译器,瞎猜的。
#define getyx(window *scr,int y,int x) y=gety(scr),x=getx(scr)
我不知道你用的什么编译器,瞎猜的。
#3
哈哈,老兄真会想办法^_^
#4
有getyx()这样的函数吗?估计被你猜对了。
函数名: getx
功 能: 返回当前图形位置的x坐标
用 法: int far getx(void);
而且当前的图形位置的坐标为(20,20),这就对了嘛!
函数名: getx
功 能: 返回当前图形位置的x坐标
用 法: int far getx(void);
而且当前的图形位置的坐标为(20,20),这就对了嘛!
#5
你是如何执行的,我怎么不可以?报告:undefined first referenced
symbol in file
initscr32 new.o
stdscr new.o
wmove new.o
getcury new.o
getcurx new.o
printw new.o
wrefresh new.o
endwin new.o
i386ld fatal: Symbol referencing errors. No output written to a.out
(SCO UNIX 5.5)
symbol in file
initscr32 new.o
stdscr new.o
wmove new.o
getcury new.o
getcurx new.o
printw new.o
wrefresh new.o
endwin new.o
i386ld fatal: Symbol referencing errors. No output written to a.out
(SCO UNIX 5.5)
#6
#include <stdio.h>
#include <curses.h>
main()
{
int x=1,y=5; (1)
initscr();
move(20,20); (2)
getyx(stdscr,y,x); (3)
printw("now location is %d,%d",x,y); (4)
refresh();
endwin();
}
看样你对move(),getyx()不待了解(1)中虽定义x,y的值,但是move()函数江光标的位置移到了(20,20)这点上,所以当你用getyx()时x,y的值就变了.
NAME
getyx - get cursor coordinates
SYNOPSIS
#include <curses.h>
void getyx(WINDOW *win, int y, int x);
NAME
move, wmove - window cursor location functions
SYNOPSIS
#include <curses.h>
int move(int y, int x);
int wmove(WINDOW *win, int y, int x);
DESCRIPTION
The move() and wmove() functions move the cursor associated with the current or specified window to (y, x) relative to the window's origin. This function does not move the terminal's cursor until the next refresh operation.
RETURN VALUE
Upon successful completion, these functions return OK. Otherwise, they return ERR.
ERRORS
No errors are defined.
#include <curses.h>
main()
{
int x=1,y=5; (1)
initscr();
move(20,20); (2)
getyx(stdscr,y,x); (3)
printw("now location is %d,%d",x,y); (4)
refresh();
endwin();
}
看样你对move(),getyx()不待了解(1)中虽定义x,y的值,但是move()函数江光标的位置移到了(20,20)这点上,所以当你用getyx()时x,y的值就变了.
NAME
getyx - get cursor coordinates
SYNOPSIS
#include <curses.h>
void getyx(WINDOW *win, int y, int x);
NAME
move, wmove - window cursor location functions
SYNOPSIS
#include <curses.h>
int move(int y, int x);
int wmove(WINDOW *win, int y, int x);
DESCRIPTION
The move() and wmove() functions move the cursor associated with the current or specified window to (y, x) relative to the window's origin. This function does not move the terminal's cursor until the next refresh operation.
RETURN VALUE
Upon successful completion, these functions return OK. Otherwise, they return ERR.
ERRORS
No errors are defined.
#7
又学到东西了
#8
变色鱼,你好请这样编译:
cc ... -lcurses
cc ... -lcurses
#9
jackeyjia:
我想知道的是内部机制,即getyx这个函数是如何将x,y的值改变的?
按理,以值传递的参数在函数内部是不能改变值的,正常的应该是传地址。
请指教!
我想知道的是内部机制,即getyx这个函数是如何将x,y的值改变的?
按理,以值传递的参数在函数内部是不能改变值的,正常的应该是传地址。
请指教!
#10
我支持jackeyjia() 的说法
#11
不是传值,是赋值
#12
getyx(win,y,x) 得到目前光标的位置
(请注意! 是 y,x 而不是 &y,&x )
(请注意! 是 y,x 而不是 &y,&x )
#13
getyx(win,y,x) 得到目前光标的位置
(请注意! 是 y,x 而不是 &y,&x )
(请注意! 是 y,x 而不是 &y,&x )
#14
赵云:
你说对了,谢谢!
原型是:
#define getyx(win,y,x) ((y) = getcury(win), (x) = getcurx(win))
你说对了,谢谢!
原型是:
#define getyx(win,y,x) ((y) = getcury(win), (x) = getcurx(win))