Не заю может изобретаю велосипед, но все же захотелось мне закинуть написать ф-цию закидывания строк в массив, но без использования stl string а просто на char'ах и с использованием WinAPI. Если есть более простое решение то буду рад увидеть. После долгих мучений вот к чему пришел, одно но char'ы у меня где-то текут. Гляньте господа и укажите что не так.
| Код | void LoadFileInArray(HANDLE& hFile,char**& strarr) { char buffer[10]; char* temp_buff; char *temp=NULL; DWORD nIn; size_t lines=0; size_t offset=0; size_t index=0; size_t size; ZeroMemory(buffer,sizeof(buffer)); while(ReadFile(hFile,buffer,sizeof(buffer)-1,&nIn,NULL) && nIn>0) { buffer[nIn]='\0'; while(buffer[index]!='\0') { if(buffer[index]=='\n') { if(temp!=NULL) { size=size=&buffer[index]-&buffer[offset]+strlen(temp); strarr[lines]= new char[size+1]; strcat(strarr[lines],temp); strncat(strarr[lines],&buffer[offset],&buffer[index]-&buffer[offset]); strarr[size]='\0'; delete[] temp; }else { size=&buffer[index]-&buffer[offset]; strarr[lines]= new char[size+1]; strncpy(strarr[lines],&buffer[offset],size); strarr[lines][size]='\0'; } offset=index+1; lines++; } index++;
} if(offset!=index) { if(temp!=NULL) {
size=strlen(temp)+(&buffer[index]-&buffer[offset]); temp_buff= new char[size]; strcpy(temp_buff,temp); strncat(temp_buff,&buffer[offset],&buffer[index]-&buffer[offset]); temp_buff[size]='\0'; //течет тут выдает Heap Corruption delete[] temp; temp = new char[size]; strcpy(temp,temp_buff); delete[] temp_buff; temp[size]='\0';
}else{ size=&buffer[index]-&buffer[offset]; temp= new char[size]; strncpy(temp,&buffer[offset],size); temp[size]='\0'; } } index=0; offset=0; ZeroMemory(buffer,sizeof(buffer)); }
}
|
|