가능한 중복 :
How do you allow spaces to be entered using scanf?C의 scanf와
의 printf ("책 제목 \ n을 키 입력하십시오"); scanf ("% s", bookname); 이 같은 데이터 내부
내가 : - C 프로그래밍
하지만 왜 이런 데이터 출력 : - C는 프로그래밍 (문자열)을 잃게?
왜
감사합니다.
가능한 중복 :
How do you allow spaces to be entered using scanf?C의 scanf와
의 printf ("책 제목 \ n을 키 입력하십시오"); scanf ("% s", bookname); 이 같은 데이터 내부
내가 : - C 프로그래밍
하지만 왜 이런 데이터 출력 : - C는 프로그래밍 (문자열)을 잃게?
왜
감사합니다.
잘 bookname
가 기분이 언짢아는 문자의 일종이다 ;-) 점은 첫 번째 공백 문자에이 양식 정류장에서 scanf
그.
다른 형식 문자열을 사용할 수 있지만이 경우 fgets
을 사용하는 것이 좋습니다.
scanf
은 실제로 "형식화 된"입력에 사용해야합니다.
%s
변환 지정자는 scanf
이 첫 번째 공백 문자에서 멈추게합니다. 당신이 공백 문자를 읽을 수 있어야합니다, 당신은 %[
변환 지정자를 사용해야합니다 중 다음 개행 문자로 모든 것을 최대를 읽고 수 있지만, bookname
에 저장됩니다
scanf("%[^\n]", bookname);
같은
safe 변환 지정자에 bookname의 최대 길이를 지정해야합니다. 예 : bookname과는 널 (NULL) 종료를 카운트 30자를위한 공간이있는 경우, 당신은 당신이fgets()
을 사용할 수, 그렇지 않으면
scanf("%29[^\n]", bookname);
를 작성해야 :
fgets(bookname, sizeof bookname, stdin);
내가 개인적으로는
fgets()
솔루션을 선호합니다.
매우 고마워. 좋은 정보 :) – user531119
'bookname '이란 무엇입니까? – khachik