본문 바로가기

C38

strlen구현 strlen 은 문자열의 길이를 반환하는 함수이다.이를 구현하면 다음과 같다.123456int strlen(char *arr){ int i=-1; while(arr[++i]); return i;}cs 이 코드를 돌리면,i가 0부터 계속 돌것이고, arr[i] 의 값이 널문자면 문자열의 종결이므로, 그 수를 반환하면 된다. 2016. 4. 4.
strcpy구현 strcpy 는 어떤 문자열을 다른 문자열에 복사하는 함수이다.이를 구현하면 다음과 같다. 12345678910int strcpy(const char*arr, char* arr2){ int i=-1; while(arr[++i]!=0) { *(arr2+i) = *(arr+i); } *(arr2+i) = '\0'; return 0;}Colored by Color Scriptercs 복사되어지는 문자열은 바뀌면 안되기때문에, const 를 붙여주었고, 첫번째 문자부터 돌면서 arr2의 값에 집어넣는다.끝난후 arr2의 마지막칸에 널문자를 넣어서 문자열의 종결을알려준다. 2016. 4. 4.
strcmp 구현 strcmp 는 두 문자열의 내용이 같은지 확인하는 함수이다.이를 구현하면 다음과 같다. 123456789101112131415161718int strcmp(const char* arr, const char* arr2){ int i=-1; int len1=-1, len2=-1; while(arr[++len1]); while(arr2[++len2]); if(len1!=len2) return -1; while(arr[++i]) { if(arr[i] != arr2[i]) { return -1; } } return 0; }Colored by Color Scriptercs char* 에 const 를 붙인이유는, 두 문자열을 비교하는것이지, 값을 바꾸기 위함이 아니기에,값이 바꿔지지 않도록 한정자를 붙여주었다. 2016. 4. 4.
배열과 포인터 배열은 가장 기본적인 자료 구조로 실용성이 높다. 포인터는 C와 다른언어를 구분하는 가장 큰 특징이다. 이 둘은 상호 보완적이면서 일정 부분에 있어서 대체가 가능하다. C는 내부적으로 1차원 배열만 지원한다.2차원 이상의 다차원 배열은 1차원 배열의 확장에 불과하다.사실상은 배열의 배열인것이다. [ ] 연산자 배열의 한 요소를 참조할 때느느 [] 연산자를 사용하며, 괄호 안에 읽고자 하는 배열의 요소의 첨자를 적는다. 사실 이 연산자가 언뜻 보기에는 구두점같지만,실제로는 첨자연산을 하는 포인터 연산자이다.이 연산자의 동작은 다음과 같다.ptr 이 임의의 배열을 가리키는 포인터이고 n 이 정수일때ptr[n] = *(ptr+n); []연산자가 따로 정의되어 있는 것이 아니라, 포인터 연산의다른 표기법 일 뿐.. 2016. 4. 3.