社区
C语言
帖子详情
gets函数是如何实现的
berniechen0123
2007-01-22 01:43:11
我想看gets是如何实现的。在glibc2.4只找到
extern char *gets (char *__s) __wur;
没有找到它的实现,请高手帮忙
...全文
1496
9
打赏
收藏
gets函数是如何实现的
我想看gets是如何实现的。在glibc2.4只找到 extern char *gets (char *__s) __wur; 没有找到它的实现,请高手帮忙
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
berniechen0123
2007-01-23
打赏
举报
回复
可能没有原代码,该函数的实体应该在某个.dll或者.obj文件中。如果该函数是在.dll文件中,链接的时候,链接程序会根据函数声明在相应的.lib文件(可能就是标准库里面)里面找到该函数所在的dll;如果是在.obj文件中,那么链接程序会在该.obj文件中找到已经编译好函数实体直接链入你的程序。
我没有用过glibc,上面的说法是根据我的用VC的经验总结的,不保证正确
-----------------------------------------------
非常感谢你得解答,也许这个问题我应该发在linux区,glibc本身编译生成的就是.so文件,实际上和windows下的动态链接库一个意思。但是作为C标准库,它可以跨平台使用,如果还需要其他文件支持可能性不大。
rularys
2007-01-23
打赏
举报
回复
我没说清楚,glibc里我没找到这个函数的实现,我只发现了extern char *gets (char *__s) __wur;
这个声明。
其实对这个函数机制我没多大兴趣,我想知道这个gets到底在glibc的什么地方。我怎么搜不到?
------------------------------------------------------------------------------------
可能没有原代码,该函数的实体应该在某个.dll或者.obj文件中。如果该函数是在.dll文件中,链接的时候,链接程序会根据函数声明在相应的.lib文件(可能就是标准库里面)里面找到该函数所在的dll;如果是在.obj文件中,那么链接程序会在该.obj文件中找到已经编译好函数实体直接链入你的程序。
我没有用过glibc,上面的说法是根据我的用VC的经验总结的,不保证正确
hanliux
2007-01-23
打赏
举报
回复
char *gets(char *s)
{
int c;
char *cs;
unsigned oflag;
oflag = stdin->_flag & (_SFERR | _EOF);
stdin->_flag &= ~(_SFERR | _EOF);
cs = s;
while( (c = getc( stdin )) != EOF
&& (c != '\n') ) {
*cs++ = c;
}
if( c == EOF && (cs == s || ferror( stdin )) ) {
s = NULL;
} else {
*cs = '\0';
}
stdin->_flag |= oflag;
return( s );
}
frogmad
2007-01-22
打赏
举报
回复
大体是这样的:
int gets(char s[],int lim)
{//读入一行字符放到S中,并返回该行的长度
int c, i;
i = 0;
while (--lim > 0 && ( c = getchar())!=EOF && c !='\n')
s[i++] = c;
if ( c == '\n' )
s[i++] = c;
s[i] = '\0';
return i;
}
frogmad
2007-01-22
打赏
举报
回复
大体是这样的:
int gets(char s[],int lim)
{//读入一行字符放到S中,并返回该行的长度
int c, i;
i = 0;
while (--lim > 0 && ( c = getchar())!EOF && c !='\n')
s[i++] = c;
if ( c == '\n' )
s[i++] = c;
s[i] = '\0';
return i;
}
jone33
2007-01-22
打赏
举报
回复
其实就是一个字条串的输入函数吗,你定义一个结构体应该可以试试看
berniechen0123
2007-01-22
打赏
举报
回复
我没说清楚,glibc里我没找到这个函数的实现,我只发现了extern char *gets (char *__s) __wur;
这个声明。
其实对这个函数机制我没多大兴趣,我想知道这个gets到底在glibc的什么地方。我怎么搜不到?
arden1019
2007-01-22
打赏
举报
回复
介个函数啊,它从标准输入中读啊读,读到换行停住...简单的实现,估计就是 while里面放一个read调用.... 哇咔咔咔 介个东西貌似很容易 overflow
berniechen0123
2007-01-22
打赏
举报
回复
自己顶一下,大家帮帮忙
gets
函数
,C语言
gets
函数
详解
gets
函数
,C语言
gets
函数
详解 在前面从键盘输入字符串是使用 scanf 和 %s。其实还有更简单的方法,即使用
gets
()
函数
。该
函数
的原型为: # include <stdio.h> char *
gets
(char *str); 这个
函数
很简单,只有...
c语言
gets
函数
编译出错,克服C语言
gets
函数
缺陷的方法初探
克服C语言
gets
函数
缺陷的方法初探一
gets
函数
简介
gets
函数
是C语言用于从stdin流中读取字符串的
函数
。
gets
函数
接收用户从键盘上输入的字符直到遇到回车时终止。原型是:char*
gets
(char *buff);举例:#include int ...
c语言 :
实现
gets
()
函数
功能
实现
gets
函数
功能,数组首地址,数组字节数当做实参
函数
gets
()的
实现
char *
gets
(char *dest) { int c = getchar(); char *p = dest; while (c != EOF && c != ‘\n’) { *p++ = c; c = getchar(); } *p = ‘\0’; return dest; } 读取输入行并将其返回: void echo() { char ...
Gets
函数
Gets
函数
1.功能:接收用户从键盘键入的字符串,直到接收到换行符或者EOF为止,将读取结果存放在()中所指向的数组中。2.一般形式: char string[100];
gets
(string);//其中string为字符串变量(字符串数组名或...
C语言
69,373
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章