c 배열 형태 문자열 입력

떵떵·2022년 6월 24일
0

문자열 배열에 입력받기

scanf("%s", 배열);
성공: 가져온 값의 개수 반환
실패: EOF(-1) 반환

cahr s1[10];

scanf("%s", s1);

scanf()로 배열에 입력받을 때는 '&'을 생략하고 작성한다.
= 배열도 포인터처럼 주소를 담고있기 때문

입력받은 문자열+1(null)을 생각하여 생성한 배열 크기의 -1만큼 입력 받는다.

scanf("%s", s1);의 경우 입력받은 문자열에 ' '(공백)이 있다면 공백 전까지만 입력받는다.

공백까지 입력받기

공백까지 입력받기 위해서는 서식지정자를 "%[^/n]s"와 같이 지정한다.

EOF란 End Of File의 약자로 더이상 값을 읽을 수 없는 상태를 나타낸다.
-1을 반환한다.

문자열 포인터에 입력받기

scanf("%s", 문자형포인터);

char *s1 = malloc(sizeof(char) * 10);

scanf("%s", s1);

위와같이 문자열 포인터에 malloc()으로 메모리를 할당하면 scanf()로 문자열을 입력받을 수 있다.

문자열 포인터는 char *s1 = "hello" 처럼 선언 후 입력받으려고 하면, 포인터 s1에 문자열 리터럴의 주소가 할당된 상태이기 때문에 '읽기 전용'이 되면서 '쓰기'가 제한된다.

문자열 여러개 입력받기

char s1[10];
char s2[10];

scnaf("%s %s", s1, s2);

공백으로 구분된 문자열 2개를 입력받을 수 있다.

입력받을 문자열 개수는 더 늘릴 수 있다.

0개의 댓글