알고리즘 문제에 최적화 된 문자 입력 방법:
1) 문자_문자 형태로 입력될 때:
ex) 아래와 같이 가변적으로 문자가 입력 될 때.
P y //P 이면 y를 삽입
L //L 이면 왼쪽 이동
R //R 이면 오른쪽 이동
P x //P 이면 x 삽입
scanf(" %c", &cmd); //앞에 한 칸 뛰고 입력 받는다.
switch(cmd){
case 'P':
//P 면 입력을 한번 더 받음
scanf(" %c", &ch); //역시 앞에 한 칸 뛰고 입력 받는다.
break;
case 'L':
break;
case 'R':
break;
}
scanf(" %c", &cmd); %c앞을 한 칸 띄어 준다.
2)문자_문자열 형태로 입력 될 때
P abc
L
R
P a
char a[10]; //넉넉하게 잡아준다.
gets(a); //VS15 이후는 gets_s() 사용
//이 후 필요한 부분 잘라씀
printf("%c", a[0]); //맨 앞 문자 하나 출력
prrintf("%s", a+2); //공백 다음 문자열 출력 ex) abc ab등
//a+1은 (공백)abc가 출력됨
gets(a);
a[0]
a+2
3. 한글자씩 입력 받을 때 뒤 공백 무시하는 방법:
char str[2];
scanf("%s", str);
printf("%c", str[0]);
#include <stdio.h>
int main() {
//문자열
char* s1 = "This is OK";
char* s2;
s2 = "This is OK";
char s3[30] = "This is OK";
char s4[30];
// s4 = "This is NO"; //식이 수정할 수 있는 lvalue 여야 합니다.
//문자열에 값을 대입하고 싶다면 선언할 때 바로 값을 넣어주어야 한다.
//선언 이후에 값을 대입하려 하면 오류가 남.
//정 입력하고 싶으면 이런 방법 사용해야함.
s4[0] = { 'T' };
s4[1] = { 'h' };
s4[2] = { 'i' };
s4[3] = { 's' };
s4[4] = NULL; //NULL 입력 안할시 오류
char s5[30] = { 'T','h','i','s',' ','i','s',' ','O','K' };
char s6[5] = { 'a','b','c',0,'d' }; //abc만 출력됨
char s7[5] = { 'a','b','c','d','e' }; //abced에러값 출력
char s8[5] = { 'a','b','c','d' }; //abcd 출력
return 0;
}
문자열 사용자 입력 :
#include <stdio.h>
int main()
{
char s1[100];
scanf("%s", s1);
printf("%s\n", s1);
//This is good 입력시 This 만 출력됨.
char s2[100];
gets_s(s2);
//gets
printf("%s", s2);
//This is good 입력시 This is good 출력
return 0;
}
문자열 배열을 활용하여 문자열 저장하기 (출처 : https://soooprmx.com/archives/4113)
C++ 문자열 받는 12가지 방법 : http://egloos.zum.com/hanjw8410/v/4056009
C++스러운 코드 #2 : 문자열을 입력받는 12가지 방법
2004/01/22 오전 2:15==================== 이 글은 제가 예전에 제가 활동하고 있는 학교 동아리에 "문자열을 입력받는 12가지 방법"이라는 제목으로 올렸던 내용을 재 편집한 것입니다.C/C++을 이용한 문제해결의 한 단편을 제시하기 위해 "표준입력으로부터 입력받은 길이를 알 수 없는 문자열 저장하기"라는 아주 전형적인 문제의 예를
egloos.zum.com
'삼성전자 알고리즘 > 기타' 카테고리의 다른 글
10. R 프로그래밍 (0) | 2019.05.16 |
---|---|
9. 포인터 [Pointer] (0) | 2019.05.14 |
7. 잔실수 모음 (0) | 2019.05.07 |
6. C++ 프로그래밍 스타일 가이드라인 코딩/프로그래밍 규칙 (0) | 2019.05.06 |
5. Visual Studio 팁 (0) | 2019.05.06 |