짜잔! 내가 제일 싫어하는 문자열 시간☆
문자를 두개 이상 입력해야 할때
#include <stdio.h>
int main(){
char a,b;
scanf("%c",&a);
scanf("%c",&b);
printf("%c\n%c",a,b);
}
이렇게 작성해버리면 입력할때 누른 [enter]키도 아스키코드에 들어가는 '문자'이기 때문에 자동으로 b에 입력이 된다.
여기서 해결방법은 크게 두가지가 있는데 하나는
#include <stdio.h>
int main(){
char a,b;
scanf("%c",&a);
scanf(" %c",&b);
printf("%c\n%c",a,b);
}
와 같이 뒷 코드에 스페이스바로 간격을 만들어 주는 것이고
*여기서 주의할점은 scanf(" %c",&a);이렇게 작성해버리면 [엔터]a[엔터]b로 입력해야 정확히 입력이 된다.
다른 하나는 입력 사이에
scanf("%c",&a);
fflush(stdin);
scanf("%c",&b);
와같이 fflush(stdin);를 입력해주는 것이다.
fflush(stdin)는 이전 작업으로 버퍼에 남아있는 입력들을 없애주는건데 예를들어 문자입력에 ab와같이 초과로 입력하게 되면 b를 지워주는 거다.
<conio.h>
새로운 헤더파일인 <conio.h>을 사용하는 함수 _getche() 와 _getch()도 나왔지만 아쉽게도 리눅스 기반에서는 이 헤더파일을 사용할 수 없다고 한다 ㅠㅠ 맥북에서도 바이바이인걸로ㅠ
대충 뭐하는 함수인지만 짚고가자면
printf("나는 똑똑합니까? (Y/y)");
answer=_getche();
이런식으로 scanf()와 비슷하게 사용하는 함수이다.
_getche() 와 _getch()의 차이점은
_getche()은 내가 어떤걸 입력했는지 화면에 보여주고
_getch()은 보여주지 않는다고 한다.
gets() 와 puts()
gets() 함수는 [enter]키가 입력되면 종료된 것으로 간주한다. scanf()처럼 사용!!
puts()은 printf()와 같지만 변수를 출력할 때 "%s"이런식으로 입력하지 않아도 되고 줄바꿈도 기본 장착돼있다.
*puts()함수는 알고리즘 1에서 처음봐서 나는 변수는 출력 불가능한줄 알았다.
#include <stdio.h>
int main(){
char a[20];
gets(a);
puts(a);
}
흠... 그렇다고 한다.
printf("%s",a); 로도 해봤지만 결과는 같았다 원래 그런갑다.
<stlib.h> 문자열 변환 함수
다시 새로운 헤더파일 <stlib.h>가 나왔다!
atoi() -문자열을 int형으로 변환
atol() - 문자열을 long 형으로 변환
atof() - 문자열을 float형으로 변환
이름부터 알아보기 쉬워서 좋다.
mun="12345";
mun=atoi(mun);
와 같이 사용하면 된다.
<string.h>
문자열을 보다 편리하게 처리할 수 있는 기능을 제공한다.
외울게 더럽게 많다 지금 당장 사용할 게 아니니 차차 알아보기로 하자
대충 사용법 예시만 들자면
//문자열의 길이 구하기
mun="Hello!";
printf("%d",strlen(mun));
와같이 사용하면 된다!
'프로그래밍 > c언어' 카테고리의 다른 글
퀵소트를 이용한 구조체 정렬(아직임) (2) | 2022.11.14 |
---|---|
응용 프로그램 작성 (배열 차순 정렬) -c언어 (0) | 2022.07.27 |
파일 입출력 라이브러리 (0) | 2022.07.26 |
표준 라이브러리의 선행 처리기 -C언어 (0) | 2022.07.13 |
와! 구조체! 신세계! (짤막한 포인터) -C언어 (0) | 2022.07.13 |