아래 역순으로 출력하는 질문이 있어서 심심해서 생각 없이 만들어 봤음. <div><br><div><div> <div>#include <stdio.h></div> <div>#include <stdlib.h></div> <div>#include <string.h></div> <div><br></div> <div>int SplitMsgReverse(const char* str_src)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* str_tok = NULL;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int space = 0;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int len_str = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int len_tok = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int len_mem = 0;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* it = (char*)str_src;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* bgn = it;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* end = it;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(; '\0' != *it; ++it)</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(' ' == *it)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// find max length token</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>end = it;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>len_tok = end - bgn;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>bgn = it;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(len_mem <len_tok)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>len_mem = len_tok;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// increase space count</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>++space;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// length test</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>len_str = it - str_src;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(0 == len_str)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// no space</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(0 == space)</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("%s\n", str_src);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if('\0' == *it)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>--it;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if('\n' == *it)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>--it;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// search end to begin</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>end = it+1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>bgn = NULL;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// makeup the 4-multiple memsize</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>str_tok = (char*)malloc( int( (len_mem+11)/4 ) * 4);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(; it >=(char*)str_src; --it)</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(' ' == *it)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>bgn = it+1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>len_tok = end-bgn;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(1 < len_tok)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>memset(str_tok, 0, len_tok+2);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strncpy(str_tok, bgn, len_tok);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%s\n", str_tok);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>end = it;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>++it; // over bgin..</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(' ' != *it)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>bgn = it;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>len_tok = end-bgn;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(1 < len_tok)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>memset(str_tok, 0, len_tok+2);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strncpy(str_tok, bgn, len_tok);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%s\n", str_tok);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>end = it;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>free(str_tok);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div> <div><br></div> <div>int main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while(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 str_src[4096+4]={0};</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>//char str_src[4096+4]=" 안녕 하세요 123456 7890ABCDEF hell lo wel come !!! to day hu mor \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>printf("1000자 미만의 문장을 입력하세요 : ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fgets(str_src, 4096, stdin);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(feof(stdin))<span class="Apple-tab-span" style="white-space:pre;"> </span>// for ctrl-z</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>break;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>SplitMsgReverse(str_src);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div> <div><br></div></div></div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.