#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
typedef size_t uint;
typedef unsigned char uchar;
char* Slicing(char* str ,size_t jmp, size_t starts, size_t len, uchar remain)
{
char buf[10000] = { 0, };
int bufIndex = 0;
int i = -1, j = 0;
while (str[++i] != 0);
const uint length = (uint)i;
i = 0;
for (; starts < length; starts += jmp)
{
if (length - starts>= len)
{
memcpy(buf + bufIndex, str + starts, len);
bufIndex += len;
starts += len;
}
else if (remain)
{
memcpy(buf + bufIndex, str + starts, length - starts);
bufIndex += length - starts;
starts += length - starts;
char *ret = (char*)malloc(sizeof(char)*(bufIndex+1));
memcpy(ret, buf, bufIndex+1);
ret[strlen(buf)] = 0;
return ret;
}
else if (!remain)
{
char *ret = (char*)malloc(sizeof(char)*(bufIndex + 1));
memcpy(ret, buf, bufIndex);
ret[strlen(buf)] = 0;
return ret;
}
}
char *ret = (char*)malloc(sizeof(char)*bufIndex+1);
memcpy(ret, buf, bufIndex+1);
return ret;
}
int main()
{
char *i = Slicing("#Eg89", 1, 1, 2, 0);
printf("%s", i);
}
예외처리 빠트렸다 에헤헷;;
조건 바꿨습니다.
버퍼있으면 문제가 너무 쉽잖아요
근데
버퍼 없다고 하면
(length - starts) % (jmp + len)한 나머지 안읽는 거고
remain따라 바뀌겠지만 위는 그렇고
((length - starts) / (jmp + len) )* len 이 그 파일 길이 되잖아
해보센