목록C (65)
개인노트
▶ 자료형을 변환해주는 함수들 - atoi, atol, atof ◀ 위의 함수들은 문자열로 표현된 정수나 실수들을 정수형으로 변환시켜야 할 때 사용하면 편리하다. #include int atoi(const char * str); // 문자열의 내용을 int형으로 변환long atol(const char * str); // 문자열의 내용을 long형으로 변환double atof(const char * str); // 문자열의 내용을 double형으로 변환 [ 예제 ]
▶ 문자열을 비교하는 함수 - strcmp, strncmp ◀ strcmp와 strncmp 함수는 문자열을 문자단위로 비교해주는 함수이다. s1 > s2 : 0보다 큰 값 반환s1 < s2 : 0보다 작은 값 반환s1 == s2 : 0 반환 #include int strcmp(char * s1, const char * s2);int strncmp(char * s1, const char * s2, size_t n ); // size_t n = n개의 문자만큼 비교→ 두 문자열이 같으면 0 반환, 다르면 0이 아닌 값 반환(컴파일러마다 다름) [ 예제 1] #include #include int main(void) {char word[30];char eng[30];printf("문자 입력 : ");fgets..
▶ 문자열을 이어주는 함수 - strcat_s, strncat_s ◀ 말 그대로 문자열을 뒤에다가 붙여서 이어주는 함수다. 하지만 문자열을 복사하는 strcpy_s, strncpy_s 와는 달리 자동으로 NULL값을 붙여준다. 즉 2개의 문자열을 합쳐도 NULL값은 하나라는 뜻이다. #include char * strcat(char * dest, const char * src);char * strncat(char * dest, const char * src, size_t n); →덧붙여진 문자열의 주소 값 반환 strcat_s(str1, str2); → str2의 문자열을 str1 뒤에 붙여준다.strncat_s(str1, str2, 8); → str2의 문자열중 8개의 문자만 str1의 뒤에 붙여준다...
▶ 문자열을 복사하는 함수 - strcpy, strncpy ◀ #include char * strcpy_s(char * dest, const char * src); // src의 문자열을 dest에 복사char * strncpy_s(char * dest, const char * src, size_t n); // src > dest일 경우 문자열을 dest의 크기만큼만 복사→ 문자열의 주소값을 복사해서 반환한다. 복사하는 두 배열의 크기가 같거나 복사되는 쪽이 크기가 크면 문제가 없다. 허나 복사되는 쪽의 크기가 작다면 문제가 된다.밑의 소스중 복사되는 배열의 크기가 작은 경우 1을 보면 복사되는 str3의 크기가 str1보다 작아서 str3의 크기 만큼만 복사를 하기 위해 sizeof(str3)의 값을 ..
▶ 함수 strlen ◀ 함수 strlen는 문자열의 길이를 반환해주는 함수이며, 헤더파일 string.h에 선언되어 있다.strlen의 반환형은 size_t인데 size_t는 typedef unsigned int size_t; 이렇게 선언되어 있다.이는 unsigned int 의 선언을 size_t로 대신할 수 있다는 의미이다.즉, size_t len; == unsigned int len; #include size_t strlen(const char * s); → 널 문자를 길이에서 제외한 값을 반환한다!! [ 예제 1] fgets 함수로 입력을 받을 때 \n값이 문자열에 포함이 되는 것을 제외시켜보자.밑의 그림에서 \n를 삭제하지 않은 문자열은 개행이 3번 이루어 졌고, \n를 삭제한 문자열은 개행이..
▶ 표준 입출력 함수 ◀ 우리가 사용하는 printf, scanf_s 함수 등... ANSI C의 표준에서 정의된 함수를 표준 입출력 함수라고 한다.표준 입출력 함수를 통해 데이터를 입출력하는 경우 메모리 버퍼를 중간에 거치게 된다.메모리 버퍼는 데이터가 출력 또는 입력 되기 전에 저장되는 임시 저장소이다. 메모리 버퍼에 저장하는 이유는 데이터 전송의 효율성 때문이다. 데이터를 바로 이동시키는 것 보다 데이터를 한번에 모아서 전송 시키는 것이 효율적이다. ▶ fflush 함수 ◀ fflush 함수는 인자로 전달된 스트림의 버퍼를 지우는 역할을 한다.fflush(stdout); // 표준 출력 버퍼를 비워라. 즉, 버퍼에 저장된 내용을 출력하라!fflush(stdin); // 입력 버퍼의 지워짐은 데이터의..
▶ 문자열 단위 출력 함수 - puts, fputs ◀ #include int puts(const char * s); // 기본 출력 대상은 stdoutint fputs(const char * s, FILE * stream); // 기본 출력 대상을 지정할 수 있다.→ puts과 fputs는 문자열을 입력 받아야 하기 때문에 포인터 변수를 사용한다.→ 성공 시 0이 아닌 값을 반환, 실패 시 EOF 반환 puts 함수와 fputs 함수는 문자열을 출력해주는 함수이지만 서로 다른점이 있다. 밑의 컴파일 결과를 보자.puts 함수와 달리 fputs 함수는 개행을 위한 printf함수를 출력하고 있다. puts 함수는 자동 개행이 되지만 fputs 함수는 그렇지 않다. [ 예제 ] #include #inclu..
문제 ) 알파벳 문자를 하나 입력 받아서 대문자는 소문자로, 소문자는 대문자로 변경해주고 알파벳 이외의문자를 입력하는 경우에는 에러 메시지를 출력해보자. 단, getchar, putchar 함수만 사용 문제 21-1.c #include #include int main(void) {char msg = '!';int alp;alp = getchar(); if (alp >= 97 && alp = 65 && alp
▶ 문자 출력 함수 - putchar, fputc ◀ #include int putchar(int c); // putchar 함수int fputc(int c, FILE * stream); // fputc 함수, FILE * stream은 문자를 전송할 스트림을 지정(파일도 가능)▶ 성공시에는 문자가 출력되고 실패 시에는 EOF(End of File) 반환 ▶ 문자 입력 함수 - getchar, fgetc ◀ #include int getchar(void);int fgetc(FILE * stream); // 문자 출력 함수와 동일한 관계▶ 파일의 끝에 도달하거나 함수 호출 실패 시 EOF 반환 [ 예제 ] #include int main(){int ch, te; ch = getchar(); // 문자를 입..
printf 함수를 이용하여 내용을 출력하는 것을 우리는 알고 있다. 하지만 어떻게 printf 함수만을 사용하여 모니터까지 연결이 되는 것일까.프로그램과 모니터, 키보드 등은 물리적으로도 떨어져 있는 개체이고 이를 연결해 주는 매개체를 스트림(Stream)이라고 한다. 스트림의 정체는 운영체제에서 제공하는 소프트웨어적인 부분이다. 운영체제는 외부장치와 프로그램 사이의 송수신 도구가 되는 스트림을 제공하는 것이다. 여태까지 printf라는 출력 함수와 scanf_s라는 입력 함수를 호출하면서 스트림의 생성과 소멸에 관련된 코드를 본 적이 없다.이는 콘솔(키보드 마우스) 입출력을 위한 스트림은 자동적으로 생성과 소멸이 된다는 것이다.이것들은 기본적으로 제공되는 '표준 스트림(standard stream)'..