?? main.c
字號:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <stdarg.h>
#include <sys/stat.h>
#include <errno.h>
typedef struct tagInterval INTERVAL;
typedef INTERVAL* PINTERVAL;
struct tagInterval{
unsigned long s;
unsigned long e;
PINTERVAL next;
};
PINTERVAL operInterval(PINTERVAL pi, unsigned long start, unsigned long end)
{
PINTERVAL piTemp,piPre,piCur,piNext;
if (start==end) return pi;
piTemp=malloc(sizeof(INTERVAL));
if(start<end){
piTemp->s=start;
piTemp->e=end;
}
else{
piTemp->s=end;
piTemp->e=start;
}
piTemp->next=NULL;
if(!pi){
return piTemp;
}
piPre=pi;
if(piPre->s>start)
{
piTemp->next=pi;
pi=piTemp;
}
else{
piCur=piPre->next;
while(piCur && (piCur->s<start))
{
piPre=piCur;
piCur=piPre->next;
}
if(!piCur)
{
piPre->next=piTemp;
}
else{
piTemp->next=piCur;
piPre->next=piTemp;
}
}
piTemp=pi;
while(piTemp->next){
piNext=piTemp->next;
if(piTemp->s==piNext->s){
if(piTemp->e<piNext->e){
piTemp->e=piNext->e;
}
piTemp->next=piNext->next;
free(piNext);
}
else if(piTemp->e>=piNext->s){
if(piTemp->e<piNext->e){
piTemp->e=piNext->e;
}
piTemp->next=piNext->next;
free(piNext);
}
else piTemp=piNext;
return pi;
}
void printInterval(PINTERVAL pi)
{
PINTERVAL piTemp;
piTemp=pi;
while(piTemp){
printf("(%d,%d)\n",piTemp->s,piTemp->e);
piTemp=piTemp->next;
}
printf("\n");
}
void subInterval(PINTERVAL pi, unsigned long s, unsigned long e)
{
PINTERVAL piTemp;
if(!pi){
printf("(%d,%d)\n",s,e);
return;
}
piTemp=pi;
if(s<piTemp->s){
printf("(%d,%d)\n",s,piTemp->s);
}
while((piTemp->next)&&(piTemp->next->e<e)){
printf("(%d,%d)\n",piTemp->e,piTemp->next->s);
piTemp=piTemp->next;
}
if(piTemp->next){
if(piTemp->next->s>e){
printf("(%d,%d)\n",piTemp->e,e);
}
else{
printf("(%d,%d)\n",piTemp->e,piTemp->next->s);
}
}
else{
printf("(%d,%d)\n",piTemp->e,e);
}
}
void writefile(char * buff, unsigned long offset, unsigned long bytes)
{
unsigned long ret;
FILE* fp;
fp=fopen("data.tmp","r+");
fseek(fp,offset,SEEK_SET);
ret=fwrite(buff,1,bytes,fp);
if(ret!=bytes){
printf("write file failed!\n");
}
fclose(fp);
}
void createMyFile(unsigned long len)
{
unsigned char buf[0x0FFF];
unsigned long quotient,remainder,idx;
FILE* fp;
quotient=len>>12;
remainder=(len & 0x0FFF);
memset(buf,0,0x0FFF);
fp=fopen("data.tmp","wb");
for(idx=0; idx<quotient;idx++){
fwrite(buf,1,0x0FFF,fp);
}
fwrite(buf,1,remainder,fp);
fclose(fp);
}
void main(int argc,char * args[])
{
PINTERVAL pi;
unsigned char buf[128];
int i;
pi=NULL;
//pi=operInterval(pi,0,1);
pi=operInterval(pi,1,2);
pi=operInterval(pi,3,5);
pi=operInterval(pi,4,6);
pi=operInterval(pi,4,5);
pi=operInterval(pi,10,11);
pi=operInterval(pi,9,10);
pi=operInterval(pi,7,13);
pi=operInterval(pi,96,123);
pi=operInterval(pi,14,24);
pi=operInterval(pi,52,68);
pi=operInterval(pi,32,56);
pi=operInterval(pi,27,58);
pi=operInterval(pi,136,113);
printInterval(pi);
subInterval(pi,0,94);
createMyFile(13120);
for(i=0;i<99;i+=3){
memset(buf,i,128);
writefile(buf,i*128,128);
}
for(i=1;i<99;i+=3){
memset(buf,i,128);
writefile(buf,i*128,128);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -