免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2043 | 回复: 8
打印 上一主题 下一主题

[C] 在redhat 9.0下C语言编译问题.请名位帮帮忙! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-24 19:20 |只看该作者 |倒序浏览
在redhat 9.0下C语言编译问题.请名位帮帮忙!
在终端下:
gcc  good.c  good_echo.c
下面有三段程序和一个编译时的错误信息:
错误信息:
[xin@localhost work]$ gcc good.c good_echo.c
/tmp/cce6DiO8.o(.text+0x5e): In function `main':
: undefined reference to `getch'
collect2: ld returned 1 exit status
第一段程序(文件名good.c):
#include <stdio.h>
#include <stdlib.h>
#include "good_echo.h"

int main(void)
{
        char        filename[60];
        FILE        *fp;

        puts("Enter name of text file to display:");
        scanf("%s", filename);
        fp = fopen(filename, "r");
       
        if (good_echo(fp))
        {
                getch();
        }       
       
        return 0;
}

[ 本帖最后由 xinfeng06 于 2007-1-24 19:26 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-01-24 19:22 |只看该作者
第二段程序(文件名good_echo.c):
/* 包含头文件 */
#include <stdio.h>
#include <stdlib.h>
#include "good_echo.h"

/* 声名常量 */
#define        BUFSIZE        40

/*-----------------------------------------------------*/

/* 主函数体 */
int good_echo(FILE *fp)
{
        char        buf[BUFSIZE];
        char        end = '0';
        short        i;

        /* 判断fopen函数打开情况 */
        if (fp == NULL)
        {
                puts("Error!opening file.");
                return 0;
        }
        else
        {
                /* 读取一行信息 */
                while ((!feof(fp)) && (end != '\n'))
                {
                        i = 0;
                        fgets(buf, BUFSIZE, fp);
                        do
                        {
                                if (buf[i] == '\n')
                                        end = '\n';
                                else
                                        i++;
                               
                        }
                        while ((i <= BUFSIZE) && (end != '\n'));
                        printf("%s", buf);
                        return 1;
                }
        }
        puts("Error! reading file or the file is empty.");
       
        return 0;
}

论坛徽章:
0
3 [报告]
发表于 2007-01-24 19:23 |只看该作者
第三段程序(文件名good_echo.h):
/*  good_echo.h: header file for good_echo.c. */

#include <stdio.h>
#include <stdlib.h>

int good_echo(FILE *fp);

/* end of good_echo.h */

论坛徽章:
0
4 [报告]
发表于 2007-01-24 19:32 |只看该作者
--

nm /usr/lib/libc.a | grep getch

看看结果是什么?

--

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2007-01-24 19:42 |只看该作者
http://www.lslnet.com/linux/dosc1/66/linux-429276.htm

错误信息已经说得很明显了,看不出来?

论坛徽章:
0
6 [报告]
发表于 2007-01-24 19:49 |只看该作者
原帖由 lenovo 于 2007-1-24 19:42 发表
http://www.lslnet.com/linux/dosc1/66/linux-429276.htm

错误信息已经说得很明显了,看不出来?


其实这里 getch() 是要 curses 库才能用的,不知道他能否看出来。

估计这段程序原本不是为类 UNIX 设计的。可能是 DOS,Windows 什么的。

--

论坛徽章:
0
7 [报告]
发表于 2007-01-25 10:13 |只看该作者
回复五楼, 我的英语水平很差所以看不懂,  -_-b

回复六楼, 这看你也知道不是为类unix系统设计的, 高手高手, 小仔佩服佩服!O_O

在此, 小仔谢谢各位的指点, 往后我会努力学好英文的.>_<

论坛徽章:
0
8 [报告]
发表于 2007-01-26 17:46 |只看该作者

回复 1楼 xinfeng06 的帖子

查看一下 vgetch()的用法嘛。


NAME
       getch, wgetch, mvgetch, mvwgetch, ungetch, has_key - get (or push back)
       characters from curses terminal keyboard

SYNOPSIS
       #include <curses.h>

       int getch(void);
       int wgetch(WINDOW *win);
       int mvgetch(int y, int x);
       int mvwgetch(WINDOW *win, int y, int x);
       int ungetch(int ch);
       int has_key(int ch);

论坛徽章:
0
9 [报告]
发表于 2007-01-26 17:52 |只看该作者
getch在文件curses.h中么(linux)?但win下是文件conio.h。学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP