scanf 함수는 공백이 포함된 형태의 문자열을 입력 받는데 제한이 있다. 그러나 puts, fputs는 제한이 없다
문자열 출력 함수 : puts, fputs
puts : 출력의 대상이 stdout으로 고정, 이 함수가 호출되면 문자열 출력 후 자동으로 개행(\n)이 이루어짐
fputs : 두 번째 인자를 통해서 출력의 대상을 결정 가능, 문자열 출력 후 자동으로 개행이 이루어지지 않음
1
2
3
4 |
#include <stdio.h>
int puts(const char * s);
int fputs(const char * s, FILE * stream); |
cs |
→ 성공 시 음수가 아닌 값을, 실패 시 EOF 반환
문자열 입력 함수 : gets, fgets
gets : stdin으로 부터 문자열을 입력 받음
fgets : 문자열을 입력 받을 곳을 설정 가능하며, size도 설정할 수 있다, 이 함수는 \n을 만날 때까지 문자열을 읽어 들이는데, \n을 제외시키거나 버리지 않고 문자열의 일부로 받아들인다. (우리가 입력 한 엔터 키의 정보까지도 문자열의 일부로 저장됨)
1
2
3
4 |
#include <stdio.h>
char * gets(char * s);
char * fgets(char * s, int n, FILE * stream); |
cs |
ex)
1
2
3
4
5
6
7 |
#include <stdio.h>
int main ()
{
char str[7];
gets(str);
} |
cs |
1
2
3
4
5
6
7 |
#include <stdio.h>
int main ()
{
char str[7];
fgets(str, sizeof(str), stdin);
} |
cs |
↑ 여기서 str배열 사이즈인 7값이 설정 돼 있지만 "123456789"의 문자열을 받게 될 경우 str배열에는 "123456"만 값이 저장된다. 이유는 문자열의 끝에 자동으로 널 문자가 추가되므로.
'언어 > C' 카테고리의 다른 글
문자열 복사하는 함수들 strcpy, strncpy (0) | 2016.01.07 |
---|---|
문자열의 길이를 반환하는 함수 strlen (0) | 2016.01.06 |
출력 버퍼를 비우는 fflush 함수 (0) | 2015.12.19 |
문자 단위 입출력 함수 putchar, getchar (0) | 2015.12.19 |
size_t형과 unsigned int (0) | 2015.12.11 |