[C언어 코드업 문제풀이] CodeUp 1022 : [기초-입출력] 문장 1개 입력받아 그대로 출력하기(설명)
코드 업 1022번 문장 1개 입력받아 그대로 출력하기 문제풀이 해답입니다.
1. 문제 설명
공백 문자가 포함되어 있는 문장을 입력받고 그대로 출력하는 연습을 해보자.
예시
char data[2001];
fgets(data, 2000, stdin);
printf("%s", data);
위와 같이 실행하면 공백이 포함된 문장을 키보드(stdin)로 입력받아
최대 2000자까지 data[ ] 공간에 저장하고 출력할 수 있다.
%s 는 문자열(string, 실로 연결된 문자들. 문장)로 출력하라는 의미이다.
참고
fgets( ) 를 사용하면 공백문자가 포함되어 잇는 문장을 입력받아 저장할 수 있다.
만약, 아래처럼
scanf("%s", ... ) 를 이용해 문장을 입력받으면, 첫 번째 단어까지만 저장된다.
char data[51] = ""; //최대 50문자까지 저장 가능
scanf("%s", data);
2. 입력
공백이 포함되어 있는 한 문장이 입력된다.
단, 입력되는 문장은 여러 개의 단어로 구성되고, 엔터로 끝나며,
최대 길이는 2000 문자를 넘지 않는다.
3. 출력
입력된 문장을 그대로 출력한다.
4. 입력 예시
Programming is very fun!!
5. 출력 예시
Programming is very fun!!
6. 문제 풀이
"CodeUp 1022 : [기초-입출력] 문장 1개 입력받아 그대로 출력하기" 는문자가 아닌 문자열을 출력하는 문제입니다.
문자는 공백으로 끝을 구분하기 때문에 scanf를 사용하게 되면 공백을 넣을 시 출력은 공백전 단어밖에 출력을 하지 않습니다.
그렇기 때문에 이번 문제풀이에서는 공백(스페이스)을 입력할 수 있는 fgets( ) 함수를 사용합니다.
#include<stdio.h>
int main(void)
{
char data[2001]="";
fgets(data,2000,stdin);
printf("%s", data);
return 0;
}
|
fgets()는
char* fgets(char* str, int num, FILE* stream);
|
로 이루어져 있습니다. str은 읽어 들인 문자열을 저장할 배열을 가리키는 포인터, num은 읽어드릴 최대 문자수(NULL포함), stream은 읽어드릴 스트림의 FILE 객체를 가르키는 포인터. 표준 입력의 경우 stdin을 사용합니다.
하지만 scanf로도 서식지 정자 변경으로 공백을 사용할 수가 있습니다.
#include<stdio.h>
int main(void)
{
char data[51]="";
scanf("%[^\n]s",&data);
printf("%s", data);
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
scanf("%[^\n] s",&data); 에서 %[^\n] s를 사용하면 공백을 포함한 문자열을 출력할 수 있습니다.