우리는 지금까지 문자열 입출력함수로 scanf 함수와 printf함수를 써왔습니다
그러나 scanf함수는 공백을 기준으로 문자열을 구분하기때문에 공백을 굳이 입력하고싶다면
언더바(_)로 써줘야 하는 번거로움이 있었습니다.
이번에 소개할 함수들은 C언어의 대표적인 문자, 문자열 입력 함수들입니다.
문자 출력 함수
int putchar(int c); // 문자를 출력버퍼에 하나씩 옮기고 기본 출력도구인 모니터에 출력합니다.
버퍼에 대한 개념은 나중에 설명합니다
int fputc(int c, FILE * stream);
// 문자를 출력버퍼에로 하나씩 옮기나, 출력을 모니터로 할것인지 파일로 할것인지 혹은 다른것으로 할것인지를 지정 할 수 있습니다.
// 스트림이라는 것 또한 버퍼를 설명할때 같이 나옵니다.
문자 입력 함수
int getchar(void);
// 키보드로부터 입력버퍼로 옮겨진 입력버퍼의 문자를 하나씩 가져옵니다.
함수호출 실패 시 혹은, Ctrl+z키 입력시 EOF(-1) 반환
// 보통 ch = getchar(); 형식으로 문자하나를 입력받는데 쓰입니다.
int fgetc(FILE * stream); // "파일에 끝에 도달하거나" 함수호출 실패 시, Ctrl+z키 입력시 EOF(-1, End of file) 반환
//여기서 EOF라는것은 End of file의 약자로 함수호출이 실패됐거나 파일에 끝에 도달하면 출력되는 값입니다
문자열 출력 함수
int puts(const char * s); // 성공 시 음수가 아닌값을, 실패 시 EOF 반환
// 특이하게도 puts함수는 개행문자인 \n을 넣어주지 않아도 자동으로 한번 개행을 시켜줍니다.
int fputs(const char *s, FILE * stream);
// puts와 다르게 개행문자 출력안해줌, 성공 시 음수가 아닌값을, 실패 시 EOF 반환
문자열 입력 함수
char * gets(char * s); // 함수호출 실패 시 NULL 포인터 반환
char * fgets(char *s, int n, FILE * stream);
// 파일의 끝에 도달하거나 함수호출 실패 시 NULL 포인터 반환(NULL이 들어있는 포인터, 아무것도 가리키지 않는다는뜻)
// fgets 함수는 추가로 int n 인자를 하나 더 입력받는데 이것은 NULL문자를 포함한 문자열의 길이 정보이며
gets함수의 문제점 때문에 생겼는데 gets함수는 이것이 없기때문에 입력받은 배열의 길이보다 많이 입력해도 그대로 다 받아들이는 문제점이 있습니다.
fgets함수에 준 배열의 길이보다 많이 입력하면 나머지는 버퍼에 남아있게 됩니다.
fgets함수는 공백을 기준으로 문자열을 구분하는 scanf함수와 다르게 엔터(개행)을 기준으로 문자열을 구분한다
더해서 엔터도 문자열의 일부로 받아들여서 엔터를 입력하면 개행도 한번 출력된다
9. 구조체란? (0) | 2020.10.04 |
---|---|
8. 기타 C언어의 여러 함수들 (0) | 2020.10.04 |
6. 함수 포인터와 void 포인터 (0) | 2020.10.04 |
5. 다차원 배열과 포인터의 포인터 (0) | 2020.10.04 |
4. 문자열을 배열, 포인터에 저장하는법과 특징 (0) | 2020.10.04 |