목록프로그래밍 (30)
Jiyong's STUDY
배열 포인터와 포인터 배열은 혼동하기 쉽다 포인터 배열 포인터 배열은 포인터를 가리키는 배열이다배열에서 배열이 가리키는 type형에 따라서 배열의 포인터형이 정해지는데 예를 들어 int형 싱글 포인터를 담는 포인터 배열에서의 포인터형은배열도 일종의 포인터이므로 싱글 포인터를 담는 포인터이므로int ** 이 된다 즉, int형 싱글 포인터를 담는 포인터 배열이라고 하면 int *arr[]; 이 된다. 즉 type *arr[]; 로 선언하면 된다. ptr1, ptr2 라는 싱글 포인터 두 개를 담는 포인터 배열을 선언과 함께 초기화를 하려면 int *arr[2]={&ptr1, &ptr2};의 방식으로 선언한다. 배열 포인터 배열 포인터는 배열을 가리키는 포인터다1차원 배열은 포인터의 형이 싱글 포인터와 같으..
#include int atoi(const char *str);long atol(const char *str);double atof(const char *str); 문자열의 내용을 각 type형으로 변환시키는 함수이다. int main(){char str1[]="123"; char str2[]="3.14"; printf("%s, %d, ", str1, atoi(str1));printf("%s, %g", str2, atof(str2));} 결과 >> 123, 123, 3.14, 3.14 문자열에 저장된 숫자를 실수형 또는 정수형으로 변환이 불가능한 것은 아니지만그 과정이 번거롭기 때문에 이 함수들을 알면 편리할 수 있다. 그리고 이 함수들에게 전달되는 인자는 반드시 숫자로만 이루어져야 한다.
문자열을 비교하는 함수 strcmp, strncmp #include int strcmp(const char *s1, const char *s2); int main(){printf("%d, ", strcmp("abc", "abc");printf("%d", strcmp("abc", "abcc");} 결과 >> 0, -1 strcmp 함수는 인자로 전달된 두 문자열의 크기를 비교한다.s1와 s2가 같은 경우에는 0을 반환한다.s1이 더 크면 0보다 큰 값을 반환하며 s2가 더 크면 0보다 작은 값을 반환한다.여기서 0보다 크거나 작은 값은 컴파일러마다 다른 값이 나오므로그 값은 무슨 값인지 생각 할 필요가 없다. 단지 두 문자열이 같으면 0, 다르면 0이 아니라는 것만 알아도 충분하다. #include int..
문자열을 덧붙이는 함수 strcat, strncat #include char *strcat(char *dest, const char *src); int main(){char str1[20]="12345";char str2[20]="67890";strcat(str1, str2);puts(str1);} 결과 >> 1234567890 strcat은 첫번째 인자에 두번째 인자의 문자열을 덧붙이는 함수이다.즉 12345 \0 뒤에 67890 \0을 덧붙여 12345 \0 67890 \0을 만들었다는 의미이다.하지만 그렇다면 중간에 문자열의 끝을 알리는 널 문자가 있는데 왜 끝까지 출력 되는지 의문일 수 있다. 그 이유는 첫번째 인자의 문자열의 마지막 공간부터 채워 넣기 때문이다.즉, 널 문자를 지우고 두번째 인자..
입출력 스트림 프로그램과 그 환경(기기) 사이에서 입출력이 이루어질 때,데이터의 이동이 직접(direct) 되는 것이 아니라 스트림(stream)이라는 매개체를 거쳐 이동된다. 표준 스트림에는 3가지가 있는데 표준 입력 스트림 (stdin) 표준 출력 스트림 (stdout)표준 에러 스트림 (stderr) 일반적으로 표준 입력 스트림은 키보드에서 받아오며,표준 출력 스트림과 표준 에러 스트림은 모니터로 출력한다.이는 별도의 리다이렉션을 통해서 변경할 수 있다. 일반적일 때, 키보드 >>> (입력 스트림) >>> 프로그램 >>> (출력 스트림 or 에러 스트림) >>> 모니터 의 형식으로 이어지게 된다. 버퍼(buffer) 버퍼는 쉽게 생각하면 임시 저장소라고 생각하면 된다. 프로그램에서 입출력이 일어날 ..
문자열을 복사하는 함수 strcpy, strncpy #include char *strcpy(char *dest, cont char *src); int main(){char str1[20]="Hello World";char str2[20];strcpy(str2, str1);puts(str2);}결과 >> Hello World strcpy는 두 인자를 받아 두번째 인자에 저장된 문자열을 첫번째 인자로 복사한다.이 함수에서 보면 str1의 저장된 내용을 str2로 복사했음을 알 수 있다. 하지만 strcpy는 사용시 위험이 있는데 int main(){char str1[20]="Hello World";char str2[5];strcpy(str2, str1);puts(str2);}결과 >> Hello World ..