Jiyong's STUDY
scanf gets fgets 문자열 입력 비교 본문
int scanf(const char *format, ...);
scanf 함수의 경우에는 공백단위로 입력받는다.
즉 how are you 라는 문장을 입력한다고 하면 공백단위로
how만 입력받게 되므로 문자열을 입력받기엔 부적합하다.
#include <stdio.h>
int main(){
char str[20];
scanf("%s", str);
printf(str);
}
에서 how are you를 입력했다면
how만 나오게 된다.
char *gets(char *s);
gets 함수의 경우에는 줄바꿈 단위로 입력받는다.
엔터를 입력하기 전까지 문자열을 입력받는다.
즉 줄을 읽어서 입력한다고 보자.
#include <stdio.h>
int main(){
char str[20];
gets(str);
puts(str);
}
에서 how are you를 입력했다면
how are you가 출력된다.
하지만 문자열을 받는 배열의 길이에 상관없이 입력을 받으므로,
문제가 생길 가능성이 높으므로 사용하지 않는 것이 좋다.
char* fgets(char *s, int n, FILE *stream);
fgets 함수도 마찬가지로 줄바꿈 단위로 입력받는다.
#include <stdio.h>
int main(){
char str[20];
fgets(str, sizeof(str), stdin);
puts(str);
}
에서 how are you를 입력했다면
how are you
가 입력된다.
이게 어떤 의미를 가지냐면 널 문자 이전에 '\n'까지 입력된다는 의미다.
그리고 인자로 문자열을 입력 받을 변수 뒤에 있는 int형 정수는 fgets가 입력 받을 길이를 의미한다.
이 함수의 경우에는 sizeof(str)이 들어갔으므로 null문자까지 20글자가 입력 가능하다.
'프로그래밍 > C' 카테고리의 다른 글
strcmp, strncmp 설명, 비교 (0) | 2018.05.15 |
---|---|
strcat, strncat 설명, 비교 (0) | 2018.05.15 |
strcpy strncpy 설명, 비교 (0) | 2018.05.14 |
비트시프트연산 (0) | 2018.03.19 |
강제형변환 (0) | 2018.03.19 |