오늘 완전 막히네요 ㅡㅜ 이번엔 실행하면 에러가;;
잇힝
#include stdio.h
#include string.h
#include ctype.h
char* makelower(char* str);
char* makeupper(char* str);
int main()
{
char* str = HELLO;
char* str1 = goodbye;
printf(함수 호출 전 : %s, %s\n, str, str1);
printf(함수 호출 후 : %s, %s\n, makelower(str), makeupper(str1));
return 0;
}
char* makelower(char* str)
{
int i, j=strlen(str);
char* a;
for(i=0; ij; i++)
{
*a++ = tolower(*str++);
}
return a;
}
char* makeupper(char* str)
{
int i, j=strlen(str);
char* a;
for(i=0; ij; i++)
{
*a++ = toupper(*str++);
}
return a;
}
12-4 연습문제 푼다고 풀었습니다;;
에러나 워닝은 없는데 실행하면 에러가뜨네요;;
뭐가 문제인지...
-
맞빨이
메모리 할당이 어떤 의미인지 메모리 할당을 왜 해주어야 하는지는 좀 더 공부해 보시는 것이 좋을 듯 하여 글을 줄입니다. 다만, 제가 말씀드린 코드를 삽입하여도 이 예제는 잠재적인 문제를 한 가지 더 가지고 있습니다. 할당된 메모리의 소멸에 관련된 이야기 입니다.
-
한빛
a 의 메모리 할당이 안되어 있습니다. 두 함수의 char* a; 를 char* a = new char[j + 1]; 로 수정해 주시면 에러는 안날겁니다.
-
비예
일단 첫 makelower 함수만 봐도 좀 문제가 있는것 같은데요.
for(i=0; ij; i++)
{
*a++ = tolower(*str++);
}
return a;
포인터 a값을 증가시켜주면서 tolower 하셨으면 return이후엔 당연히 string(char*)의 끝을 가리키고 있겠죠.