반응형
문자열 입력, 출력 함수들
문자열 입력 함수는 대표적으로 세 가지가 있다.
1. scanf_s
2. scanf
3. gets
안전성 문제 때문에 scanf_s 함수 사용을 마이크로 소프트에서 적극 권장하고 있다.
따라서 나머지 함수들은 사용을 자제하는게 좋다.
scanf_s 함수 사용하여 문자열 입력
1. char를 배열로 선언해주고 %c 대신 %s로 입력 받으면 된다.
2. 주의 할 점은 sizeof(input)처럼 크기를 지정해 줘야 한다. 크기를 지정하지 않으면 에러 발생.
#include <stdio.h>
int main()
{
char input[16];
printf("문자 입력 : ");
scanf_s("%s", input, sizeof(input));
printf("%s\n", input);
return 0;
}
결과

아래부터는 사용을 권장하지 않는 함수다.
gets 함수 사용하여 문자열 입력
#include <stdio.h>
int main()
{
char input[16];
printf("문자 입력 : ");
gets(input);
printf("%s\n", input);
return 0;
}
결과

scanf 함수 사용하여 문자열 입력
#include <stdio.h>
int main()
{
char input[16];
printf("문자 입력 : ");
scanf("%s", input);
printf("%s\n", input);
return 0;
}
결과
scanf 함수 사용 시 에러가 발생한다.

사실 scanf 함수를 사용 할 수 있는 방법이 있다.
scanf 함수를 꼭 사용해야만 한다면 아래 링크 참고
https://goodprogramer.tistory.com/106
[C언어] scanf 함수 에러 해결하기 (Erorr : C4996)/ scnaf 함수 강제로 사용하기
scanf 에러 발생(C4996) 오류 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project2 C:\Project2\Project2\FileName.c 8 에러
goodprogramer.tistory.com
반응형
'C 언어' 카테고리의 다른 글
[C언어 강좌] 2. visual studio 설치 및 프로젝트 생성 (0) | 2024.08.10 |
---|---|
[C언어 강좌] 1. C언어 란? (0) | 2024.08.10 |
[C언어] 최대값 최소값 찾기 예제 (0) | 2024.05.07 |
[C언어] 버퍼 오버플로우(Buffer overflow) 예방법/ 스택 버퍼 오버플로우/ 힙 버퍼 오버플로우 (1) | 2024.02.24 |
[C언어] scanf 함수 에러 해결하기 (Erorr : C4996)/ scnaf 함수 강제로 사용하기 (1) | 2024.02.10 |