c 언어 가 사용자 의 입력 문자열 을 가 져 오 는 것 은 scanf 와 gets 의 차이 점 에 대한 상세 한 설명 입 니 다.
gets(s)함 수 는 scanf("%s",&s)와 비슷 하지만 완전히 같 지 않 습 니 다.scanf("%s",&s)함수 로 문자열 을 입력 할 때 문제 가 있 습 니 다.빈 칸 을 입력 하면 문자열 이 끝났다 고 생각 하고 빈 칸 의 문 자 는 다음 입력 항목 으로 처리 되 지만 gets()함 수 는 줄 이 바 뀔 때 까지 입력 한 모든 문자열 을 받 습 니 다.
1.scanf()
헤더 파일:stdio.h
문법:scanf("형식 제어 문자열",변수 주소 목록);
문자열 을 받 아들 일 때:scanf("%s",문자 배열 이름 또는 포인터);
2.gets()
헤더 파일:stdio.h
문법:gets(문자 배열 이름 이나 포인터);
둘 이 문자열 을 받 아들 일 때:
1.차이 점:
scanf 는 빈 칸,탭 문자 Tab,리 턴 등 을 받 아들 일 수 없습니다.
그리고 gets 는 빈 칸,탭 문자 Tab 와 리 턴 등 을 받 아들 일 수 있 습 니 다.
2.공통점:
문자열 수락 이 끝 난 후 자동 으로'\0'을 추가 합 니 다.
예 1:
#include <stdio.h>
int main()
{
char ch1[10],ch2[10];
scanf("%s",ch1);
gets(ch2);
return 0;
}
asd 빈 칸 fg 리 턴,asd 빈 칸 fg 리 턴 을 순서대로 입력 하면 ch1="asd\0",ch2="asd fg\0".프로그램 2:
#include <stdio.h>
int main()
{
char str1[20], str2[20];
scanf("%s",str1);
printf("%s
",str1);
scanf("%s",str2);
printf("%s
",str2);
return 0;
}
프로그램의 기능 은 문자열 출력 을 읽 고 문자열 출력 을 읽 는 것 입 니 다.입력 한 문자열 에 빈 칸 이 나타 나 지 않 습 니 다.예 를 들 어:테스트 1 입력:
Hello word(enter)
출력:
Hello
world!
프로그램 3:
#include <stdio.h>
int main()
{
char str1[20], str2[20];
gets(str1);
printf("%s
",str1);
gets(str2);
printf("%s
",str2);
return 0;
}
테스트:
Helloworld! [ ]
Helloworld! [ ]
12345 [ ]
12345 [ ]
[분석]분명히 이전 프로그램의 실행 상황 과 다 릅 니 다.이번 프로그램 은 키보드 에서 두 번 읽 었 고 첫 번 째 문자열 은 Helloworld 를 가 져 왔 습 니 다!이전 프로그램 처럼 두 문자열 로 나 뉘 지 않 고 빈 칸 자 를 받 아 들 였 습 니 다!따라서 빈 칸 이 있 는 문자열 을 읽 으 려 면 gets()를 사용 해 야 하기 때문에 scanf()를 사용 해 서 는 안 됩 니 다!이상 의 c 언어 에서 사용자 의 입력 문자열 을 가 져 오 는 것 은 scanf 와 gets 의 차이 점 입 니 다.상세 한 설명 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
c 언어 간단한 파일 r/w 조작 방법데이터의 입력과 출력은 거의 모든 C 언어 프로그램과 수반된다. 입력이란 원본에서 데이터를 얻는 것이다. 출력은 단말기에 데이터를 쓰는 것으로 이해할 수 있다.이곳의 원본은 키보드, 마우스, 하드디스크, 시디, 스캐...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.