본문 바로가기

Programming/C

(26)
문자열을 숫자로 변환하는 함수 1. atoi 함수 #include int atoi(const char * str); Ascii TO Integer -> 문자열을 int형으로 변환한다. 기본적으로 변환된 정수를 반환하지만 변환이 불가능한 경우 0을 반환한다. 2. atol 함수 #include int atol(const char * str); Ascii TO Long-> 문자열을 long형으로 변환한다. 기본적으로 변환된 정수를 반환하지만 변환이 불가능한 경우 0을 반환한다. 3. atof 함수 #include double atof(const char * str); Ascii TO Float-> 문자열을 부동소수점 실수로 변환한다. 기본적으로 변환된 실수를 반환하지만 변환이 불가능한 경우 0을 반환한다. 1 2 3 4 5 6 7 8 9..
sprinf, sscanf 함수 1. sprintf 함수 #include int sprintf(char *buffer, const char *format, argument-list); printf 함수와 같이 서식에 맞춰 출력한다. 다만 출력하는 위치가 모니터가 아닌 buffer 배열일 뿐이다. 그 외에는 모두 printf 함수와 동일하다. 반환값은 성공적으로 출력한 문자의 개수(NULL 문자 제외). 에러 발생 시 EOF를 반환한다. 이 함수의 특성 상 숫자 데이터를 문자열로 바꾸는 데에 유용하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include int main() { char str[200]; int num1 = 123; double num2 = 3.1415; sprintf(st..
문자열 비교 함수 1. 문자열 비교 함수 #include int strcmp(const char * s1, const char * s2); int strncmp(const char * s1, const char * s2, size_t n); 문자열의 내용이 같으면 0, 아니면 0이 아닌 값을 반환한다. strncmp 함수는 n 바이트만 비교한다. s1 이 더 크면 양수가, s2 가 더 크면 음수가, s1 과 s2 의 모든 문자가 같으면 0이 반환된다. 여기서 크고 작음은 아스키 코드 값을 기준으로 결정된다. 그런데 문자열을 비교하는 데 굳이 함수를 써야 하는 걸까? 물론 써야 하니까 소개하는 것이다. 하지만 이유는 알아야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #includ..
문자열 길이 측정, 복사, 연결 함수 1. 문자열의 길이를 측정하는 함수 #include size_t strlen(const char * s); 매개변수로 받은 문자열 s 의 길이를 size_t 형으로 반환한다. 문자열의 길이이므로 널 문자는 제외한 길이를 반환한다. 주의할 점은 stdio.h가 아닌 string.h에 선언되어 있으므로 #include 를 코드 앞 부분에 작성해야 한다는 것이다. .h 파일은 헤더 파일(header file)의 확장자명으로, 함수나 변수, 상수들이 선언되어 있는 파일이다. size_t 는 보통 다음과 같이 선언되어 unsigned int 를 의미한다. typedef unsigned int size_t; 아직은 typedef 라는 선언을 통해 unsigned int 자료형을 unsigned int 라는 이름 대..
문자열 입출력 함수 1. 문자열 출력 함수 다음의 두 가지가 있다. int puts(const char* s); int fputs(const char* s, FILE* stream); 매개변수로 전달된 문자열 s 를 출력한다. 엄밀히 말하면 s 는 char형 포인터 변수지만, 문자열은 문자 배열로 표현되며 배열의 이름은 배열의 시작 주소이므로 s 에 문자열 이름을 전달할 수 있다. 호출이 성공하면 puts 함수는 0을, fputs 함수는 0 이상의 정수를 반환하고, 호출이 실패하면 EOF를 반환한다. 즉 음수가 아닌 값이 반환되었다는 것은 에러가 발생하지 않았다는 뜻. 참고로 puts 함수는 문자열을 출력할 때 자동으로 끝에 개행 문자가 삽입되지만 fputs 함수는 그렇지 않다. 또한 fputs 함수는 fputc 함수와 마..
문자 입출력 함수 1. 문자 출력 함수 다음의 두 가지가 있다. int putchar(int c); int fputc(int c, FILE* stream); 함수 호출이 성공하면 c 를, 즉 출력한 문자의 아스키 코드값을 int형으로 반환하고, 함수 호출이 실패하면 EOF를 반환한다. EOF는 조금 뒤에 살펴본다. 정수 c 를 문자의 형태로 출력한다. 예를 들어 c 값이 65면 A가 출력된다. fputc 함수는 stream 을 통해 출력할 스트림을 지정할 수 있다. stream 을 stdout으로 지정하면 모니터로 출력되고, 파일로 지정하면 파일로 출력할 수 있다. stream 의 자료형에서 FILE 은 파일 구조체인데, 아직은 자료형의 일종이라고만 알아두자. 1 2 3 4 5 6 7 8 9 10 #include int ..
스트림 1. 입력과 출력 그동안 입력이라는 말과 출력이라는 말을 꽤 많이 사용해 왔다. 그렇다면 다음과 같은 질문에 답할 수 있을까? 무엇이 입력인가? 무엇이 출력인가? 입력은 무언가가 들어가는 것이고, 출력은 무언가가 나오는 것이다. 결국 중요한 것은 어디서 들어가는가, 어디서 나오는가다. 그리고 어디, 그러니까 기준이 되는 곳은 프로그램이다. scanf 함수는 키보드로부터 입력받는다. 다시 말해 키보드에서 프로그램으로 입력받는다. printf 함수는 모니터로 출력한다. 다시 말해 프로그램에서 모니터로 입력받는다. 2. 스트림 그런데 어떻게 키보드에서 입력한 내용이 프로그램으로 전달되는 걸까? 프로그램과 키보드가 뭔가 통신이라도 하는 걸까? 프로그램과 키보드, 프로그램과 모니터는 기본적으로 떨어져 있다. 연결..
void형 포인터 1. void형 포인터 포인터에는 여러가지 형이 있다. double*, int*, short*, 배열 포인터, 함수 포인터, 이중 포인터, … 그런데 아직 언급하지 않는 것이 있는데, 바로 void형 포인터다. void형 포인터 변수 역시 여느 포인터 변수와 마찬가지로 다음과 같이 선언된다. void* ptr; void의 사전적 의미는 공허 또는 빈곳이다. 즉 아무것도 없음을 의미한다. 그래서 반환값이 없는 함수의 반환형을 void로 쓰는 것이다. 그렇다면 void형 포인터는 아무것도 가리키지 않는 포인터일까? 2. 모든 것을 가리킬 수 있는 포인터 void형 포인터는 아무것도 가리키지 않는 포인터가 아니다. 오히려 모든 것을 가리킬 수 있는 포인터다. int형 변수, double형 변수, 심지어는 함수..