<div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">아래의 코드는 문장을 입력하면 문장에 공백이 있으면 잘라서 한 단어씩 출력하는 소스코드인데요</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">그런데..</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><b style="margin:0px;padding:0px;">*(ps+i)==32 </b></div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">이부분은 스페이스 코드가 있으면 계속 실행하는데요. </div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">스페이스바 이외에 !나 ,도 printf의 함수출력에서 지우고 싶다면 while(*(ps+i)==32 ||*(ps+i)==44||*(ps+i)==33),</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">while( *(ps+i)!=32 &&*(ps+i)!=44&&*(ps+i)!=33) 처럼 해야 하는데요.</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">그런데 그렇게 바꾸는거 보다는 *(ps+i)==(32||44||33) 이렇게 해도 될 거 같은데 그런데 이렇게하면 논리연산을 하면 컴파일시 오류가 나오는데요.</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">위처럼 lvalue==rvalue||lvalue==rvalue||lvalue==rvalue하는거는 너무 코드가 길어져서 좀 난잡해 보이는데 이것보다 더 간결한 표현식으로 표현할 수 있는 방법은 없을까요?</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><br style="margin:0px;padding:0px;"></div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">#include <stdio.h></div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">#include <stdlib.h></div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">char* my_token(char* ps);</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><br style="margin:0px;padding:0px;"></div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">int main()</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">{</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>char str[80];</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>char* p;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>printf("문장 입력:");</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>gets(str);</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>while((p=my_token(str))!=NULL)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>{</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>printf("%s\n",p);</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>}</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>return 0;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">}</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">char* my_token(char* ps)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">{</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>char* start;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>static int i=0;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">//while(<b style="margin:0px;padding:0px;">*(ps+i)==32</b>)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">while(*(ps+i)==32 ||*(ps+i)==44||*(ps+i)==33)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>{</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>i++;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>}</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>start=ps+i;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">if(*start==0)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>return start=NULL;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>else</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>{</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>//while(<b style="margin:0px;padding:0px;">*(ps+i)!=32</b>)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">while( *(ps+i)!=32 &&*(ps+i)!=44&&*(ps+i)!=33)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>{</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>i++;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>if(*(ps+i)==0)</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>return start;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>}</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>*(ps+(i++))=0;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>return start;</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;"><span class="Apple-tab-span" style="margin:0px;padding:0px;white-space:pre;"></span>}</div> <div style="margin:0px;padding:0px;color:#404040;font-family:sans-serif;font-size:13px;">}</div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.