인프런 커뮤니티 질문&답변

fe님의 프로필 이미지
fe

작성한 질문수

홍정모의 따라하며 배우는 C언어

11.4 문자열을 입력받는 다양한 방법들

16분대에 나온 예제에서 && a[i] != '\0'은 무얼 뜻하나요?

작성

·

271

1

안녕하세요.

 아래 코드의 while문에서 && a[i] != '\0'는 어떠한 역할을 하나요?

&& a[i] != '\0'를 넣고 빼고 두 경우 모두 디버깅을 해보았지만 어떤 경우에서도 차이점을 찾지 못하겠습니다.

while문에서 && a[i] != '\0'을 넣는 이유가 무엇인가요?

fgets으로 1234를 입력했다면

실제로 입력되는것은 1234\n\0이라서 인가요?

#define _CRT_SECURE_NO_WARNINGS
#include 


int main(void)
{
	char a[20];
	fgets(a, 20, stdin);
	int i = 0;
	while (a[i] != '\n' && a[i] != '\0')
	{
		i++;
	}
	if (a[i] == '\n')
		a[i] = '\0';
	fputs(a, stdout);
	return 0;
}

답변 2

2

상황을 한정하면 사실 \n 를 만나면 종료되니 따로 필요하진 않아보이는군요.
string의 끝이 일반적으로 '\0'이니 이 경우를 생각하신게 아닐까 싶습니다.

0

입력이 n-1개 즉, 작성해주신 코드로 보시면 입력이 19개이상 되면 buffer에 '\n'을 포함한 다른 문자들이 남게되므로 buffer를 지워주는 while문을 뒤에 나오는 예제에 추가하시는데 그 부분과 관련있지 않을까 생각합니다..

fe님의 프로필 이미지
fe

작성한 질문수

질문하기