#include <stdio.h>
int main()
{
char arr[30] = { 0 };
printf("문자열 입력 : ");
scanf_s("%s", arr, 30);
printf("%s", arr);
return 0;
}
입력 : hello wolrd
출력 : hello
scanf_s 는 문자열을 공백을 기준으로 입력 받기 때문에 공백이 입력되면 문자열의 끝으로 해석하고 더 이상 읽어들이지 않는다.
#include <stdio.h>
int main()
{
char arr[30] = { 0 };
printf("문자열 입력 : ");
scanf_s("%s", arr, 30); // hello+공백 까지 입력받음
printf("%s", arr);
scanf_s("%s", arr, 30); // 입력버퍼에 남아있는 world가 전달 됨
printf("%s", arr);
return 0;
}
입력 : hello world
출력 : helloworld
이렇게 printf 문의 호출에 이어 바로 scanf_s 의 입력을 받게 되면 입력버퍼에 남아있는 world가 전달되어 바로 printf 문에서 호출로 이어진다.
공백을 포함하여 문자열을 입력 받으려면?
#include <stdio.h>
int main()
{
char arr[30] = { 0 };
fputs("문자열 입력 : ",stdout);
fgets(arr,30,stdin);
fputs(arr, stdout);
return 0;
}
입력 : hello world
출력 : hello world
fgets 함수는 문자열의 끝을 의미하는 \0 입력 받을 때 까지 계속 읽어 들인다. 따라서 fputs에서 이어지는 호출도 그대로 입력받은 값을 출력하게 된다.
키보드로 입력받은 값을 아스키코드 값으로 보고 싶다면?
#include <stdio.h>
#include <conio.h>
int main()
{
int str;
printf("문자 입력 : ");
while (1) {
str = _getch();
printf("%d ", str);
}
return 0;
}
_getch() 함수는 버퍼를 사용하지 않고 키보드로부터 입력받은 값을 바로 입력받는다. 아스키코드 값을 확인하고 싶다면 위와 같이 확인할 수 있다.
'Programming > C' 카테고리의 다른 글
Pointer (0) | 2020.11.29 |
---|
댓글