현재 각종 MD5해시를 구분해서 저장하는 작업을 하고 있습니다. 근데 파일 크기가 커서인지 잘 안되네요 <div><div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201608/1472629294c6ffb473a1a44fba8e2e4ec4431f0d74__mn687956__w853__h188__f35317__Ym201608.png" width="800" height="176" alt="캡처.PNG" class="chimg_photo" style="border:none;" filesize="35317"></div>위 파일에서 앞자리 한글자 0~9, a~z 별로 구분에서 파일에 따로따로 저장하려 합니다. 파일이 커서인지 제가 코딩을 잘못해서인지 왜인지 모르겟지만 잘 안되네요.... 일단은 앞글자 '0'인것만 따로 빼와서 저장하도록 해보았습니다.</div> <div>마지막에 아래 사진처럼 이상해집니다. 그리고 원본의 값들이 다 들어가는것도 아니구요</div> <div><div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201608/147262953918a5a91cf94d467a82b426a5be24f0e4__mn687956__w1533__h316__f244360__Ym201608.png" width="800" height="165" alt="캡처2.PNG" class="chimg_photo" style="border:none;" filesize="244360"></div> <div><br></div> <div>--------------------소스코드----------------------------------</div> <div>#include <stdio.h></div> <div>#include <stdlib.h></div> <div>#include <string.h></div> <div>#include <io.h></div> <div><br></div> <div>#define RECORD_SIZE 33 // 한 레코드가 차지하는 바이트 수</div> <div><br></div> <div>int main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int handle = 0; </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int count = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>_finddata_t fd;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>handle = _findfirst("..\\virus share\\*.md5", &fd);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char * buffer;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (handle == 0)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("_findfirst Error");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return -1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* filename;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>filename = (char*)malloc(sizeof(FILENAME_MAX));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strcpy(filename, "..\\virus share\\");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strcat(filename, fd.name);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>FILE *fp = fopen(filename, "r");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fseek(fp, 0, SEEK_END); // 파일포인터를 끝으로 이동</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>count = ftell(fp) / RECORD_SIZE; //총 크기를 32+1 로 나눠 해시 갯수</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fseek(fp, 0, SEEK_SET);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>buffer = (char*)calloc(count, RECORD_SIZE);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int readdata = fread(buffer, RECORD_SIZE, count, fp);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d, %d\n", readdata, count); //여기서 count와 readdata가 같아야 하는데 다름. readdata가 정확한값</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fclose(fp); </div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char * token = NULL;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>token = strtok(buffer, "\n");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char buff[1];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int count2 = 0;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>FILE *fp2 = fopen("..\\virus share_test\\0.md5", "w+");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char(*buffer2)[RECORD_SIZE];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>buffer2 = (char(*)[RECORD_SIZE])calloc(readdata, RECORD_SIZE);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while (token != NULL)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strncpy(buff, token, 1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (buff[0] == '0')</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strcpy(buffer2[count2], token);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>count2++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>token = strtok(NULL, "\n");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fwrite(buffer2, RECORD_SIZE, count2, fp2);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fclose(fp2);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div></div> <div>-------------------------소스코드 끝-------------------------------</div> <div>buffer2 동적할당을 이상하게 해주었는데 어떤식으로 해야할지 잘 모르겠네요, 도중에 개행문자도 안들어가고....</div> <div>fseek과 해시바이트갯수를 나눠 구한 갯수와 fread로 읽어드린 해쉬 갯수가 다른것도 이상하고요....</div>알려주시면 감사하겠습니다.ㅠ