c언어 41.1 질문드립니다.
, 식 탐님이 작성#include <stdio.h> #include <string.h> // strchr 함수가 선언된 헤더 파일 int main() { char s1[30] = "A Garden Diary"; // 크기가 30인 char형 배열을 선언하고 문자열 할당 char *ptr = strchr(s1, 'a'); // 'a'로 시작하는 문자열 검색, 포인터 반환 while (ptr != NULL) // 검색된 문자열이 없을 때까지 반복 { printf("%s\n", ptr); // 검색된 문자열 출력 ptr = strchr(ptr + 1, 'a'); // 포인터에 1을 더하여 a 다음부터 검색 } return 0; }이 코드에서 s1[30]을 char s1[30] = "A Garden Diary"가 아닌 char s1[30]; scanf("%s", s1);으로 입력하면 A Garden 처럼 스페이스바 부분에서 while문이 끝납니다. scanf로 입력했을때도 문자열로 들어가고 미리 집어넣은것도 문자열이라서 별 차이가 없을줄 알았는데 scanf로 글자를 입력하면 왜 끝나는 건가요?
Re: c언어 41.1 질문드립니다.
, 도장_ 관리자님이 작성%s로는 공백이 포함된 문자열을 사용할 수 없습니다.
UNIT 40.1의 참고 "공백까지 포함하여 입력받기"를 참고하세요.
https://dojang.io/mod/page/view.php?id=336
학습 기록을 보면 UNIT 40.1을 12분만에 패스하셨는데, 내용을 천천히 읽고, 이해하고, 예제까지 실습했다면 12분보다는 더 걸렸을거에요.
급하게 학습하기보단 천천히 해보세요. 아는 것 같아 하고 건너뛰기보단 하나씩 짚어보면서 학습하세요.
서식 지정자의 전체는 UNIT 85.2에 정리되어 있습니다.
https://dojang.io/mod/page/view.php?id=736
%[플래그][폭][.정밀도][길이]서식지정자
이 형식을 설명하는 C 언어 입문서가 거의 없을 겁니다. 조합해서 쓰는 방식이라 모든 조합을 보여줄 수는 없고, 기본 방식을 이해하는 게 가장 중요합니다.