관리 메뉴

History

[c언어]쉼표로 문자열을 구분해서 줄바꿈 출력하기 본문

C,C++/개념 실습 프로그래밍

[c언어]쉼표로 문자열을 구분해서 줄바꿈 출력하기

luckybee 2022. 9. 19. 00:29
728x90
반응형

아래와 같이 쉼표로 구분된 문자열이 있습니다. 

"Hello~! ,My name is minki kim~ ,How are you today~? ,:)"

이 문자열을 쉼표 구분해서 아래와 같은 이미지처럼 나오게 하려면 어떻게 해야 할까?

정답은 간단하다. ','를 만나는 부분을 개행 문자(\n)로 바꾸면 해결된다. 

#include<stdio.h>
#pragma warning(disable:4996)

int main()
{
	char arr[100]="Hello~! ,My name is minki kim~ ,How are you today~? ,:)";
	for (int i = 0; arr[i] !=NULL; i++){
		if (arr[i]==','){
			arr[i] ='\n';
		}
		printf("%c", arr[i]);
	}
    return 0;
}

for문의 종결 조건에 사용한 arr[i]!=NULL은 0과 비교하겠다는 뜻이다. 단순히 arr[i]만 적어도 된다. 어차피 문자열의 끝에는 NULL값이 들어있을 것이다.

 

두 번째 방법으로 위의 예제를 포인터 형식으로 바꿔서 만들어보겠다.

 

#include<stdio.h>
#pragma warning(disable:4996)

int main()
{
	char arr[] = "Hello~! ,My name is minki kim~ ,How are you today~? ,:)";
	char* p_pos= arr;
	while (*p_pos){
		if (*p_pos == ',') {
			*p_pos = '\n';
		}
		p_pos++;
	}
	printf("%s", arr);
    return 0;
}

위와 같은 코드가 나온다. 문자열을 받은 배열의 시작 주소를 char 포인터에 대입한 후 반복문을 통해 ,를 만나면 개행을 대입해준 후 반복문이 끝나면 출력해준다.

728x90
반응형
Comments