티스토리 뷰

단어를 1개 입력받는다.
입력받은 단어(영어)의 각 문자를 한줄에 한 문자씩 분리해 출력한다.

 

원래는 break 부분을 '\n' 개행문자와 비교했다.

그런 식으로 제출하면 항상 "실행중 에러"

Segmentation fault:세그먼트 에러입니다. 배열의 잘못된 인덱스 지정, 포인터의 잘못된 사용, 또는 잘못된 메모리 참조가 원인입니다.

이런 오류가 발생했었다. visual studio 에서는 제대로 작동하는데 코드업에 제출만 하면 이러니까 넘 짜증났다.

 

알고보니 10 크기의 문자 배열을 만들고 hello 를 입력하고 출력해보면

hello
h
e
l
l
o




이처럼 '\n' 문자로 저장되는 것이 아니라 빈 값으로 저장되는 것을 알게 됐다.

그래서 \n 이 아니라 NULL 값과 비교했더니 에러가 발생하지 않고 AC를 얻었다.

#include<iostream>
#include<string>
using namespace std;

int main() {
	char str[21];
	cin.getline(str, 21, '\n');
	for (int i = 0; i < 21; i++) {
		if (str[i] == NULL) {
			break;
		}
		cout << "\'"<<str[i]<<"\'" << endl;
	}
}
댓글