문자열을 출력하는 다양한 방법
예제 코드 보면서 시작하겠다.
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);
}
실행결과
첫번째로 puts()
는 끝에 알아서 \\n
을 붙여주는걸 확인할 수 있었음.
다음은 문자열을 포인터처럼 사용해 포인터 연산하면, 그 시작지점을 변경할 수 있다는 점을 알아보았음.
char str[] = { 'h', 'i', 'i' }; // no \\0 at the end
puts(str); // null이 없어서 오류가 생김
puts()
는 \0을 만날때까지 출력하는데, 저렇게 \\0
이 없는 배열을 puts()
이용해서 출력하면 메모리에 있는 임의의 null이 나올때까지 쓰레기값들을 출력한다.
다음으로 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()
는 그런거 없음