EASY7
[C언어 16강] gets()와 scanf() 문자열 입력받기 본문
[1] gets()
엔터 치기 전 문자열들을 모두 읽고
마지막 엔터키는 버리고
'\0'문자를 추가하여 호출한 프로그램에 문자열 전달
#include<stdio.h>
void main()
{
char sample[50];
printf("문자열을 입력하세요\n");
gets(sample);
printf("당신이 입력한 문자열 : %s", sample);
}
최대 50개 문자열을 받는 sample에 글자를 넣음
sample은 '행'자의 주소를 기억함.
행자로 가서 null까지 쭉 읽음.
[2] scanf()
숫자, 문자열 받을 수 있다
스페이스, 엔터, 탭 키가 나올 때까지 입력한 문자열 받음.
#include<stdio.h>
void main()
{
char sample[50];
printf("문자열을 입력하세요\n");
scanf("%s",sample);
printf("당신이 입력한 문자열: %s", sample);
}
왜 &안 쓰는 것일까
&를 주소를 뜻함
하지만 sample은 이미 처음 요소의 주소 자체이기에 &쓸 필요없다.
void main()
{
int a;
char arr[30];
scanf("%s%d",arr, &a); /*그냥 스페이스하고 숫자입력하기*/
printf("%s \n", arr); /*hong이 출력됨.*/
printf("%d %ld \n", a, &a); /* 300 352156542(a의 주소)이 출력됨 */
}
%ld(엘 디)는 long의 정수형인가봐요
문자열 선언과 초기화 명확히 하기
[1] 선언만 할 때
char s[]; -- 오류난다. char s[]="hello"는 가능
char s[5]; --okay
char s; -- 문자형변수이다. 문자열, 배열아님
[2] 선언과 초기화를 함께 할 때
char s[]={'h','e','l','l','o',\0};
char s[5]={'h','e','l','l','o',\0};
char s[10]={'h','e','l','l','o',\0};
char s[]="hello"; -- s의 크기는 \n포함하여 6이다.
char s[10]="hello";
char s = "hello";
char s[20]={"hello" ,'h','e','l','l','o',\0}; -- 같은 char이라고 문자형, 문자열 섞어서 쓰면 안된다.
'개발 공부 > C' 카테고리의 다른 글
[C언어 18강] 포인터란? (0) | 2016.07.09 |
---|---|
[C언어 17강] 두 문자열을 비교하는 strcmp() (0) | 2016.07.09 |
[C언어 15강] 문자열은 배열이다 , strlen (0) | 2016.07.08 |
[C언어 14강] 함수와 배열을 이용한 실습 (0) | 2016.07.08 |
[C언어 13강]함수에서 배열 사용하기 (0) | 2016.07.08 |