最近在LIUNX下写CGI程序因为经常内存溢出,就想了个方法用函数来避免问题的发生以下是读字符串函数
char *read_str(int fp,int len)
{
char *str=NULL;
read(fp,str,len);
return str;
}
以下是输出函数
void poslist()
{
printf("<form action=\"\" method=\"post\">\
<table align=\"center\" width=\"654\" border=\"0\">\
<tr>\
<td align=\"center\" colspan=\"3\">位置列表</td>\
</tr>\
<tr>\
<td width=\"170\">名称</td>\
<td width=\"129\">值</td>\
<td width=\"341\">操作</td>\
</tr>");
char *POS_NAME,*POS_VALUE;
int i=0,j=0,fp=open("test.txt",O_RDWR|O_CREAT,00700);//LINUX附加文件没有办法从指定位置写吗!
struct stat buf;
fstat(fp,&buf);
while(i<=buf.st_size){
lseek(fp,i,0);
//read(fp,&POS_NAME,8);
直接read会溢出
//read(fp,&POS_VALUE,2);
POS_NAME=read_str(&fp,8);//-------
无输出调用时出错
POS_VALUE=read_str(&fp,2);
printf("<tr>\
<td><input name=\"pn%d\" size=\"32\" type=\"hidden\">\
%s</td>\
<td><input name=\"pv%d\" size=\"32\" type=\"hidden\">\
%s</td>\
<td><a href=\"%s\">编辑</a>/<a href=\"%s\">删除</a></td>\
</tr>",j,POS_NAME,j,POS_VALUE,POS_VALUE,POS_VALUE);
j++;i+=10;
}
close(fp);
printf("</table></form>");
}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)