본문 바로가기

삼성전자 알고리즘/기타

8. C/C++ 문자열 입출력

알고리즘 문제에 최적화 된 문자 입력 방법:

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