목차
- 이전 포스팅의 C 언어 pthread 및 detached thread 생성 예제 학습 링크
- 이전 포스팅의 C 언어 strcmp 함수로 두개 문자열 같은지 확인 예제 학습 링크
- 이전 포스팅의 C 언어 memset 메모리 버퍼 초기화 예제 학습 링크
- C 언어 로컬에 저장된 텍스트 파일을 fseek로 마지막 오프셋으로 이동 예제
- C 언어 feof 함수로 현재 파일의 오프셋이 파일의 끝인지 확인 예제
이전 포스팅의 C 언어 pthread 및 detached thread 생성 예제 학습 링크
이전 포스팅에서는 c언어에서 스레드를 생성하는 예제에 대해 알아보았습니다. 리눅스 시스템에서는 스레드를 pthread 함수를 이용하여 생성할 수 있습니다. 예로 pthread_create 등의 함수가 존재합니다. 이처럼 스레드는 한 프로세스에서 독립적으로 코드를 실행할 수 있는 논리적 처리 단위를 의미합니다. 스레드를 많이 생성할 수록 cpu의 처리수가 많아지기때문에 성능에 문제를 일으킬 수 있습니다. 따라서 스레드는 적당한 개수로 활용해야합니다. 또한 detached thread는 join되지않는 자식 스레드를 의미합니다. 이러한 스레드를 생성하는 방법이 궁금하시다면 아래 링크를 참고해주세요.
2023.07.16 - [C/응용] - [C언어/C++] C언어 pthread 및 detached thread 만들기
이전 포스팅의 C 언어 strcmp 함수로 두개 문자열 같은지 확인 예제 학습 링크
다음으로 이전 포스팅에서는 c언어에서 strcmp 함수를 사용하여 두 개의 문자열 버퍼가 서로 같은 문자열 값이 저장되어있는지 확인하는 예제에 대해 알아보았습니다. strcmp함수는 각 버퍼의 오프셋을 이동시키며 1개의 바이트 값이 서로 같은 값인지 순차적으로 비교해 나아갑니다. 만약 1개라도 다른 값이 발견된다면 문자열이 같지 않다고 판단합니다. 이처럼 c언어에서 버퍼에 저장된 각기 다른 문자열을 같은지 비교하고 싶으시다면 아래의 포스팅을 참고하여 strcmp 함수에 대해 학습해보세요.
2023.07.16 - [C/응용] - [C언어/C++] C언어 strcmp 문자열 비교 API
이전 포스팅의 C 언어 memset 메모리 버퍼 초기화 예제 학습 링크
마지막으로 이전 포스팅에서는 c언어에서 memset 함수를 사용하여 인자로 전달하는 버퍼의 값을 같은 값으로 채우는 방법에 대해 알아보았습니다. 채운다고 표현한 이유는 버퍼 시작부분부터 내가 원하는 크기만큼의 메모리 위치에 같은 값을 모두 복사합니다. 일반적으로 memset으로 0의 값으로 버퍼의 내용을 채웁니다. 이는 지역번수 즉 stack에 할당되는 지역변수들은 초기화가되더라도 기존 마지막에 저장되어있던 더미 값이 그대로 유지되기때문입니다. 만약 c언어에서 memset 함수로 메모리 버퍼 초기화 예제가 궁금하시다면 아래 링크를 참고하여 학습해주세요.
2023.07.17 - [C/stdio] - [C언어/C++] C언어 memset 메모리 초기화
C 언어 로컬에 저장된 텍스트 파일을 fseek로 마지막 오프셋으로 이동 예제
아래는 c언어에서 로컬에 저장된 텍스트 파일을 fseek로 마지막 오프셋 까지 이동시키는 예제입니다. fread를 통해 값을 읽어도 오프셋이 이동되며 fseek를 통해 읽지않고도 강제로 오프셋을 이동시킬 수 있습니다. 마지막 오프셋의 캐릭터를 출력하면 개행 문자가 있기때문에 엔터가 표시됩니다.
아래는 예제에 사용된 /tmp/data.txt 파일 내용입니다.
Hello, this is a sample text file for feof example.
#include <stdio.h>
int main() {
FILE *filePointer;
char ch;
int fileSize;
// 파일 열기
filePointer = fopen("/tmp/data.txt", "r");
if (filePointer == NULL) {
printf("파일을 열 수 없습니다.\n");
return 1;
}
// 파일 크기 계산
fseek(filePointer, 0, SEEK_END);
fileSize = ftell(filePointer);
// 파일 마지막으로 오프셋 이동
fseek(filePointer, fileSize - 1, SEEK_SET);
// 파일의 마지막 문자 읽기
ch = fgetc(filePointer);
printf("파일의 마지막 문자: %c\n", ch);
// 파일 닫기
fclose(filePointer);
return 0;
}
C 언어 feof 함수로 현재 파일의 오프셋이 파일의 끝인지 확인 예제
아래는 c언어에서 feof함수를 사용하여 현재 파일 오프셋이 파일의 끝인지 여부를 파악하는 예제입니다. 이러한 feof함수를 통해 이미 파일의 끝까지 읽은 파일을 더 읽지 않도록 오류를 방지할 수 있습니다.
#include <stdio.h>
int main() {
FILE *filePointer;
char ch;
// 파일 열기
filePointer = fopen("/tmp/data.txt", "r");
if (filePointer == NULL) {
printf("파일을 열 수 없습니다.\n");
return 1;
}
// 파일 끝까지 문자 하나씩 읽어오기
while (!feof(filePointer)) {
ch = fgetc(filePointer);
if (feof(filePointer)) {
printf("파일의 끝에 도달하였습니다.\n");
break;
}
}
// 파일 닫기
fclose(filePointer);
return 0;
}