hi, hello('\n')
hi, wins
//
hi, hello('\n')
hi, wins('\n')
//
두 문단을 gnl로 읽었을 때 차이점은 line의 맨마지막줄이 '\0'로 끝나는지 아닌지 차이
#include "get_next_line_bonus.h"
#include <stdio.h>
#include <sys/fcntl.h>
int main()
{
int fd;
int ret;
char *line;
fd = open("./test", O_RDONLY);
while ((ret = get_next_line(fd, &line)) > 0)
{
printf("%s\n",line);
free(line);
}
printf("%s\n",line);
free(line);
return(0);
}
main.c 함수로 실행시켜보면, 마지막에 한줄에 '\0'이 있느냐 없느냐에 따라 출력되는 문단이 달라진다.
참고로 '\0' 과 EOF(=-1)는 다르다.[1]
read함수는 모든 문자를 다 읽으면 0을 return하지만, buffer에는 0('\0')을 넣어주지않는다. 왜냐하면 파일에 \0값이 없기 때문이다.(이 문서 맨 위에서 보여줬다시피)
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <sys/fcntl.h>
int main()
{
char buffer[65];
int count = 64;
buffer[64] = 0;
memset(buffer, 76, 64);
for (size_t i = 0; i < count; i++)
{
printf("%c\n", buffer[i]);
}
printf("--------------\n");
int fd = open("./what", O_RDONLY);
printf("%d\n", read(fd, buffer, 40));
printf("%s\n",buffer);
close(fd);
}
1.https://www.quora.com/What-is-the-difference-between-0-and-EOF-in-C
'42cursus > get-next-line' 카테고리의 다른 글
get_next_line(bonus) (0) | 2020.07.11 |
---|---|
get_next_line(mandatory) (0) | 2020.07.02 |
프로세스의 메모리, 파일 입출력함수 (0) | 2020.07.01 |