EASY7

[C언어 16강] gets()와 scanf() 문자열 입력받기 본문

개발 공부/C

[C언어 16강] gets()와 scanf() 문자열 입력받기

E.asiest 2016. 7. 8. 22:36

 

 

[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이라고 문자형, 문자열 섞어서 쓰면 안된다.

 

 

Comments