<p>제가 지금 포인터에 대해서 공부하고있는데요..아무리 봐도 이해안가는게 있어서.. 알려주시면 감사하겠습니다 ㅠ</p><p><br></p><p>아래 코드에서 strrevcase는 주어진 문자열에서 소문자는 대문자로, 대문자는 소문자로 바꾸는건데요.. 아래처럼 하면 잘되는데</p><p></p><p>#include <stdio.h></p><p>#include <conio.h></p><p>#include <ctype.h></p><p>#include <string.h></p><p><br></p><p>void strrevcase (char (*ch)[32]);</p><p><br></p><p>int main()</p><p>{</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char ch1[32]="cASe";</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char ch2[32]="reVERSe";</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>printf("ch1=%s, ch2=%s\n",ch1,ch2);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>strrevcase(&ch1);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>strrevcase(&ch2);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>printf("ch1=%s, ch2=%s",ch1,ch2);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>_getch();</p><p>}</p><p><br></p><p>void strrevcase (char (*ch)[32])</p><p>{</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int len=strlen(*ch);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int i;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>for (i=0;i<len;i++) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if ((*ch)[i] == tolower((*ch)[i])) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char u=toupper((*ch)[i]);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>(*ch)[i]=u;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>} else {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char l=tolower((*ch)[i]);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>(*ch)[i]=l;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p>}</p><p><br></p><p>아래처럼 하면 메모리오류??인가 액세스 실패..같은게 계속 뜹니다</p><p><br></p><p><p>#include <stdio.h></p><p>#include <conio.h></p><p>#include <ctype.h></p><p>#include <string.h></p><p><br></p><p>void strrevcase (char** ch);</p><p><br></p><p>int main()</p><p>{</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char* ch1="cASe";</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char* ch2="reVERSe";</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>printf("ch1=%s, ch2=%s\n",ch1,ch2);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>strrevcase(&ch1);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>strrevcase(&ch2);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>printf("ch1=%s, ch2=%s",ch1,ch2);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>_getch();</p><p>}</p><p><br></p><p>void strrevcase (char** ch)</p><p>{</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int len=strlen(*ch);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int i;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>for (i=0;i<len;i++) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if ((*ch)[i] == tolower((*ch)[i])) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char u=toupper((*ch)[i]);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>(*ch)[i]=u;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>} else {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>char l=tolower((*ch)[i]);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>(*ch)[i]=l;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p>}</p><p><br></p><p>배열 포인터를 이중포인터로 바꾼건데요.. 왜안될까요..</p></p><p></p>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.