게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 포인터와 배열 관련해서 질문입니다..
게시물ID : computer_68500짧은주소 복사하기
작성자 : 전자기파
추천 : 0
조회수 : 339회
댓글수 : 4개
등록시간 : 2012/12/12 23:58:49

제가 지금 포인터에 대해서 공부하고있는데요..아무리 봐도 이해안가는게 있어서.. 알려주시면 감사하겠습니다 ㅠ


아래 코드에서 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;

}

}

}


배열 포인터를 이중포인터로 바꾼건데요.. 왜안될까요..

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호