고수님들 배열과 함수, 포인터에 대해서 궁금합니다.

ins878의 이미지

안녕하세요~
프로그래밍을 열심히 공부하는 학생입니다. 다름이아니라, 문자열을 함수로 통해서 보낼때, 문자열의 크기를 알 수 있는 방법이 없은가요?

#include <stdio.h>

void aaa(char *get)
{
int size;
int str = strlen(get);
size = sizeof(str);

printf("%d\n",str);
printf("%d\n",size);
}

int main()
{
char a[10] = "abcde";

printf("%d\n",sizeof(a));
aaa(a);

return 0;
}

위 소스코드에서요.. 배열의 크기를 10으로 잡아서 함수로 넘겨주면, 함수에서 배열의 크기를 알 수 있는 방법이 없나요. 고수님들 부탁드립니다.

litdream의 이미지

저는 #define 을 사용합니다.

#define  BUFSIZE   1024
.
.
. <in the code>
.
   char buf[BUFSIZE];
.
.
   printf("Buf size=%d\tStr len=%d\n", BUFSIZE, strlen(buf));

삽질의 대마왕...

익명 사용자의 이미지

aaa()로 배열의 크기도 넘기는 방법을 쓰시면 안되나요?
사용할 수 있는 최대 버퍼의 크기라는 개념으로 넘겨도 의미 상으로는 크게 문제가 없는데...

익명 사용자의 이미지

c는 high 레벨 언어가 아닙니다.
무척 low하죠
많은걸 기대하심 다치실듯.. 농담입니다 :D

ㅡ,.ㅡ;;의 이미지

가능합니다.
매크로 사용하시면됩니다. define Aaa( x ) aaa( x, sizeof(x))
그러나 주의할점은 배열이 나닌경우도 고려해야겠지요
C를 고급언어처럼 사용하면 웬만한건 됩니다.


----------------------------------------------------------------------------