
1)recv循环接收到相同的数据,即recv执行后,不会清除底层socket的缓冲区指针,在使用select时,一直提示有读数据,在不使用select循环recv时,永远不会出现0以下结果。这几天一直和一个光盘较劲,因为光盘的部分数据无法copy,总是出现 “无法复制:数据错误(循环冗余检查)” 这种错误,网上找了很多办法,说用winrar的,说用数据恢复的,说用iis架服务器断点续传的,基本没一个靠谱的,最后终于找到一个办法可以解决这种问题。这几天一直和一个光盘较劲,因为光盘的部分数据无法copy,总是出现 “无法复制:数据错误(循环冗余检查)” 这种错误,网上找了很多办法,说用winrar的,说用数据恢复的,说用iis架服务器断点续传的,基本没一个靠谱的,最后终于找到一个办法可以解决这种问题。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i;
double help[2049];
FILE *fp = fopen("externalrough1.dat", "r");
if(fp==NULL)
{
printf("Cannot open file strike any key exit!");
exit(1);
}
fscanf(fp, "%lf", &help);
FILE *fh=fopen("LIANXI.dat","w");
for (i=0; i<=2048; i++) fprintf(fh,"%f\n",help[i]);
fprintf (fh, "\n");
fclose(fh);
}
2011-08-05 20:10
程序代码:
#include "stdafx.h"
#include <stdlib.h>
struct Matlib_Data
{
unsigned int Element_Number;
double Data[4096];
char Separate;
} the_Data;
double Get_One_Data(FILE* fp, const char Separate);
int _tmain(int argc, _TCHAR* argv[])
{
FILE* fp;
errno_t nError;
the_Data.Separate = 0x09;// 数据分隔符为TAB
the_Data.Element_Number = 0;// 数据数目
nError = fopen_s(&fp, "D:\\externalrough1.dat", "r");
if (nError == 0)
{
fseek(fp, 0, SEEK_SET);
while (!feof(fp))
{
the_Data.Element_Number++;
the_Data.Data[the_Data.Element_Number-1] = Get_One_Data(fp, the_Data.Separate);
printf_s("%.17f\n", the_Data.Data[the_Data.Element_Number-1]);
}
}
fclose(fp);
printf_s("\n总共读入%d个数据\n\n", the_Data.Element_Number - 1);
return 0;
}
// 从数据文件读入一个数据
double Get_One_Data(FILE* fp, const char Separate)
{
int ch;
char Buffer[256];
char* pBuffer = Buffer;
double data;
ch = fgetc(fp);
while (ch != EOF && ch != Separate)
{

*pBuffer = ch;
pBuffer++;
ch = fgetc(fp);
}
*pBuffer = '\0';
sscanf_s(Buffer, "%lf", &data, _countof(Buffer));
return data;
}
2011-08-05 20:10
程序代码:
#include "stdafx.h"
#include <stdlib.h>
// 程序功能:从数据文件中读入数据,储存在the_Data中,这个量的数据类型是Matlib_Data
//the_Data.Element_Number才是数据的个数
struct Matlib_Data
{
unsigned int Element_Number;// 真正的元素数目
char Separate;// 数据文件使用的分隔符
double Data[2048];// 储存数据的数组
} the_Data;
double Get_One_Data(FILE* fp, const char Separate);
bool parasedata(cbtfile* pcorefile, const char* pdata, int nsize)。 bool pdf2png(const wchar_t* pdffilename/*,const char* imageoutputpath*/,const char* imagename, int &pagenum)。lintexport herror write_image(const halcon::hobject &image, const char *format, hlong fillcolor, const char *filename)。
// 主程序入口
int _tmain(int argc, _TCHAR* argv[])
{
FILE* fp;
errno_t nError;
the_Data.Separate = 0x09;// 数据分隔符为TAB
the_Data.Element_Number = 0;// 数据数目
nError = fopen_s(&fp, "D:\\externalrough1.dat", "r");
if (nError == 0)

{
fseek(fp, 0, SEEK_SET);
while (!feof(fp))
{
the_Data.Data[the_Data.Element_Number] = Get_One_Data(fp, the_Data.Separate);
printf_s("%.17f\n", the_Data.Data[the_Data.Element_Number]);// 本行使用中可不要
the_Data.Element_Number++;
}
the_Data.Element_Number--;
fclose(fp);
printf_s("\n总共读入%d个数据\n\n", the_Data.Element_Number);
if (Save_Data("D:\\New.DAT", &the_Data))
{
printf_s("\n新的数据文件储存为D:\\New.DAT\n\n");
}
}
else
{
printf_s("需要读入的数据文件无法打开\n\n");
}
return 0;
}
// 从数据文件读入一个数据
double Get_One_Data(FILE* fp, const char Separate)
{
int ch;
char Buffer[256];
char* pBuffer = Buffer;
double data;
ch = fgetc(fp);
while (ch != EOF && ch != Separate)

{
*pBuffer = ch;
pBuffer++;
ch = fgetc(fp);
}
*pBuffer = '\0';
sscanf_s(Buffer, "%lf", &data, _countof(Buffer));
return data;
}
// 重新储存数据
bool Save_Data(const char FileName[], Matlib_Data* pData)
{
FILE* fp;
errno_t nError;
nError = fopen_s(&fp, FileName, "w");
if (nError == 0)
{
fseek(fp, 0, SEEK_SET);
fwrite(pData, sizeof(*pData), 1, fp);
fputc(EOF, fp);
fclose(fp);
return true;
}
else
{
printf_s("\n储存文件%s无法建立\n\n", FileName);
return false;
}
}
[ 本帖最后由 TonyDeng 于 2011-8-5 21:09 编辑 ]
2011-08-05 21:04
十一.导入、导出eil图片组文件图片组源文件是gif格式,或bmp格式,如果存入了图片组中,就变成了eil格式,大家可以导出这个eil格式,好处是以后可以直接导入这个文件,或合并eil文件,方便操作,或在编程中使用命令动态导入图片组。分笔数据版块转换器可以批量互相转换分析家和飞狐的分笔数据文件,生成每日行情文件(report.dat等),可以根据每日行情文件生成历史分笔文件,板块转换功能目前实现:大智慧、分析家、飞狐、通达信转飞狐、分析家格式,目前版本为1.3.0.2,完全绿色软件,无需安装,下载直接使用,以后升级和技术支持请到macd论坛数据下载区。也即在mid文件被ie解析之前,先用js构造上面这样的内存格式,其中xxx表示有数据,ooo表示空闲内存,每个||之间的内存大小正好为0x400,这样在上面内存结构的基础上再由ie解析mid文件而产生winmmalloc(0x400)的动作就会分配到上面的ooo的某个位置上,然后由于mid文件是特殊的构造好的会使winmmalloc(0x400)分到的内存地址+0x19处的内存的内容加1的文件,于是ie解析mid文件后,将导致winmmalloc(0x400)分到的某个ooo位置的右边一个xxx的位置上的偏移0x19中的值加1,当上面构造的特殊内存格式时构造好该位置内容的值+1会使得代码执行时,就可以利用这个漏洞了,而书中(msf)的利用方式是用下面的js来达到目的的:。
2011-08-05 21:04
现在OK了,转存之后,fread()整个数据文件,就得到所有数据。
2011-08-05 21:24
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-102344-1.html
虽然服役时间早
那一千五都没有