常用C++函数或API函数的伪代码

zzqzzq 2003-07-24 08:28:36
本人觉得学习编程的一个最大困难是只见函数头不见函数体,结果是只知其一,不知其二。为了揭开这种只见龙首,不见龙尾的神秘面纱,帮助更多人的共同提高,本人倡议,大家都来谈一谈各自发现的C++函数或API函数的伪代码。可给分2000。
...全文
290 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzqzzq 2003-07-28
  • 打赏
  • 举报
回复
up
菜牛 2003-07-28
  • 打赏
  • 举报
回复
记得有一本书,是分析Windows核心代码的,很久以前看过,看头晕了。不过上面几位兄弟的都是C Runtime函数,哪有API的影子。
sstower 2003-07-28
  • 打赏
  • 举报
回复
vc开发包提供了很多函数的原码
xiaohedou 2003-07-28
  • 打赏
  • 举报
回复
曾经有个深挖内码的高手侯先生,先后挖了不少!兄弟也在作此功否?

建议参考UNIX、LINUX等、STL等。
vcforever 2003-07-25
  • 打赏
  • 举报
回复
学习!向高手学习!
zzqzzq 2003-07-25
  • 打赏
  • 举报
回复
up
suxk 2003-07-25
  • 打赏
  • 举报
回复
up
studentwuz 2003-07-25
  • 打赏
  • 举报
回复
多看看CSDN.net
暗黑帝国 2003-07-25
  • 打赏
  • 举报
回复
学习
i_tingfeng 2003-07-25
  • 打赏
  • 举报
回复
下载点Linux源代码看看,定能收益非浅
speakboy 2003-07-25
  • 打赏
  • 举报
回复
帮您UP
zzqzzq 2003-07-25
  • 打赏
  • 举报
回复
刚写的,顶一下。
#include <stdlib.h>
#include<iostream.h>

double ptod(char* str,int pos,int p);//按p进制提取double数
long ptol(char* str,int pos,int p);//按p进制提取长整数
void main()
{
char* str = "-B7.34123";
cout<<strtol(str,0,16)<<endl;
cout<<ptol(str,0,16)<<endl;
cout<<ptod(str,0,16)<<endl;
}

long ptol(char* str,int pos,int p)
{
int i=0,k=0;
long sum=0;
char* dat="0123456789ABCDEF";
if(str[0]=='-'){sum=-ptol(str+1,pos,p);pos++;return sum;}
while(str[i]!='\0')
{
for(int j=0;j<p;j++)
if(str[i]==dat[j]) {sum=p*sum+j;break;}
if(j==p) break;
i++;
}
pos=i;
return sum;
}
double ptod(char* str,int p, int pos)
{
int i=0,k=0;double dec=p;
double sum=0,dsum=0;
char* dat="0123456789ABCDEF";
if(str[0]=='-') {sum=-ptod(str+1,pos,p);pos++;return sum;}
while(str[i]!='\0')
{
if(str[i]=='.') {k++;i++;}
if(k==0)
{
for(int j=0;j<p;j++)
if(str[i]==dat[j]) {sum=p*sum+j;break;}
if(j==p) break;
}
if(k==1)
{
for(int j=0;j<p;j++)
if(str[i]==dat[j]){sum+=j/dec;dec*=p;break;}
if(j==p) break;
}
if(k==2) break;
i++;
}
pos=i;
return sum;
}
zzqzzq 2003-07-25
  • 打赏
  • 举报
回复
up
无敌魔仙 2003-07-24
  • 打赏
  • 举报
回复
觉得用API多了,感觉自己像个砖瓦匠,在堆砌程序
zzqzzq 2003-07-24
  • 打赏
  • 举报
回复
上面的dest[n]='\n';改为dest[n]='\0';
API是用C,汇编等写的,一般人是不可能知道源代码的,但更重要的是意译,伪代码。从数学上来说,破解是必然的。一个函数使用多了,就能知道它的输入输出,不管这个黑箱有多黑。
shinesi 2003-07-24
  • 打赏
  • 举报
回复
晕倒
zzqzzq 2003-07-24
  • 打赏
  • 举报
回复
本人先带个头,意在抛砖引玉。
char* strncpy(char* dest,const char* str,size_t n)
{
for(int i=0;i<n;i++)
dest[i]=str[i];
dest[n]='\n';
return str+n;
}
char* strstr(const char* str,char* sub)
{
int i=0;len=strlen(sub);
while(str[i]!='\0')
{
if(strncmp(str+i,sub,len)==0)
retrun str+i;
i++;
}
return NULL;
}
Richuen22 2003-07-24
  • 打赏
  • 举报
回复
API只能以汇编形式看,或者根本就是用WIN32汇编编写的。
如WIN32的MessageBox,是当作操作系统的调用来用的,像以前的DOS中断。

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧