문자열을 출력하는 다양한 방법

예제 코드 보면서 시작하겠다.

int main()
{
	char str[60] = "String array initialized";
	char* ptr = "A pointer initialized";

	puts("Sting without \\\\n");
	puts("END");
	puts(TEST);
	puts(TEST + 5);
	puts(&str[3]);
	puts(ptr + 3);
}

실행결과

Untitled

첫번째로 puts() 는 끝에 알아서 \\n 을 붙여주는걸 확인할 수 있었음.

다음은 문자열을 포인터처럼 사용해 포인터 연산하면, 그 시작지점을 변경할 수 있다는 점을 알아보았음.

char str[] = { 'h', 'i', 'i' }; // no \\0 at the end
puts(str); // null이 없어서 오류가 생김

puts() 는 \0을 만날때까지 출력하는데, 저렇게 \\0이 없는 배열을 puts() 이용해서 출력하면 메모리에 있는 임의의 null이 나올때까지 쓰레기값들을 출력한다.

Untitled

다음으로 puts() vs fputs()

char line[100];
while (gets(line))
		puts(line);

char line[100];
while (ftegs(line, 100, stdin))
		fputs(line, stdout);

fgets()는 얼마나 받아들일지 파라미터로 따로 설정할 수 있음. fpust()puts()의 차이는 어제 이야기했던 것 처럼 출력끝에 \n을 붙이냐 마냐임. puts()는 붙여주지만 fpust()는 그런거 없음