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