함수 getchar()에 대한 간단한 질문..

Chance78의 이미지

이제 방학이라 C를 좀 공부해볼려고 하는데 처음부터 막히네요..
간단하게 문자열을 입력받아서 문자중에 '\t' (tab)가 있으면 그 공간만큰
공백을 출력하는 프로그램인데 이상하게 게속 문자열을 입력 받습니다.

어디가 문제인지 답변 좀~ *^^*

#include <stdio.h>

#define MAX_STRING 255
void main()
{
	char string[MAX_STRING];
	int i = 0;

	for(i = 0; (string[i] = getchar()) != EOF; i++);

	for(i = 0; string[i] != EOF; i++)
	{
		if(string[i] == '\t')
		{
			printf("      ");
			continue;
		}


		putchar(string[i]);

	}

	
}


see2002의 이미지

getchar() 맨페이지를 보세요.
리턴값이 int형입니다.
이와관련된 글은 아래 URL을 참고하세요.
http://bbs.kldp.org/viewtopic.php?t=20263

pynoos의 이미지

Quote:

for(i = 0; (string[i] = getchar()) != EOF; i++);

이 부분은 계속 입력 받으라는 말입니다. EOF 를 입력할때까지..string이라는 변수에 하나씩 넣겠군요.

xfmulder의 이미지

참고적으로 EOF 를 입력하려면(?)
유닉스에서는 Cntl-D 이고요,
ms-windows 에서는 Cntl-Z 입니다.

내 자식들도 나처럼 !!

cdpark의 이미지

char로는 EOF를 처리할 수 없는 경우도 있습니다. (unsigned char)

getchar()의 결과는 int로 받으시고, EOF가 아닐 경우에 배열에 저장하세요.

ysy의 이미지

위에 코드를 쓸 필요없이,gets() 함수나 fgets()함수를 이용한다면
굳이 탭 처리를 할필요없겠네요 ...