목차
- 이전 포스팅의 C 언어 strtok 문자열을 콤마로 나눠 저장하기 예제 학습 링크
- 이전 포스팅의 C 언어 strstr로 문자열에서 또 다른 문자열 찾기 예제 학습 링크
- 이전 포스팅의 C 언어 strlen 함수로 전체 문자열 길이 확인 예제 학습 링크
- C 언어 stdio.h 의 remove 함수로 로컬에 저장된 파일 삭제 예제
- C 언어 파일 삭제 권한이 없는 경우 remove 파일 삭제 오류 예제
이전 포스팅의 C 언어 strtok 문자열을 콤마로 나눠 저장하기 예제 학습 링크
이전 포스팅에서는 c언어에서 strtok 함수를 사용하여 버퍼에 저장된 장문의 문자열 속에 콤마 단위로 나누어 나뉘어진 문자열들을 저장하는 방법에 대해 알아보았습니다. strtok 함수는 인자로 전달된 문자열 버퍼에서 콤마로 나뉘어 나뉘어진 문자열들의 각 시작 주소를 포인터로 반환합니다. 이 때 여러개의 포인터가 생성되는 경우 제일 처음 나뉘어진 문자열 버퍼 주소를 반환합니다. 따라서 strtok 함수로 여러 문자열을 나눌 때에는 for, while 반복문으로 여러번 처리해야합니다. 만약 c언어에서 strtok 함수로 문자열을 콤마로 나누는 방법이 궁금하시다면 아래 링크를 참고하여 학습해주세요.
2020.07.01 - [C] - C/C++ API 문자열 특정 문자로 나누기(strtok)
이전 포스팅의 C 언어 strstr로 문자열에서 또 다른 문자열 찾기 예제 학습 링크
다음으로 이전 포스팅에서는 c언어에서 strstr 함수로 긴 문자열 속에서 또 다른 문자열을 찾아내는 방법에 대해 알아보았습니다. string string 이라는 의미를 가지고 있습니다. 우리가 책이나 회의록같은 장문의 텍스트가 저장된 파일에서 어떤 특정 단어가 포함되어있는지 확인하기 위해서 한 글자 한 글자씩 수동적으로 읽고 판단할 수는 없습니다. 따라서 c언어에서는 strstr 함수를 제공해주며 직접 반복문으로 바이트들을 읽어가며 사용자가 원하는 단어가 있는지 찾아줍니다. 특히 찾아주는 방식이 오프셋을 이용합니다. 만약 c언어에서 strstr 함수 사용방법이 궁금하시다면 아래 링크를 참고해 학습해주세요.
2023.07.26 - [C] - [C/C++] strstr 문자열에서 특정 문자열 찾기
이전 포스팅의 C 언어 strlen 함수로 전체 문자열 길이 확인 예제 학습 링크
마지막으로 이전 포스팅에서는 c언어에서 strlen 함수를 사용하여 인자로 전달한 문자열 버퍼에 몇 글자의 문자열들이 저장되어있는지 판별하여 문자열 길이를 알아보는 예제에 대해 알아보았습니다. c에서는 문자열의 길이를 판별하기위해서는 첫 버퍼의 주소에서 아스키 문자를 판단하여 NULL을 만날 때 까지 반복적으로 버퍼를 읽습니다. 따라서 만약 문자열 버퍼의 끝에 NULL이 없는 포인터를 strlen 함수의 인자로 전달하면 버퍼 오버플로우가 발생할 수 있습니다. 이는 악의적인 공격에 c 프로그램을 노출시킬 수 있기때문에 반드시 확인해야합니다. 만약 c언어로 strlen 함수로 문자열 길이 구하는 방법이 궁금하시다면 아래 링크를 참고해주세요.
2023.07.26 - [C] - [C/C++] strlen 문자열 길이 구하기
C 언어 stdio.h 의 remove 함수로 로컬에 저장된 파일 삭제 예제
아래는 c언어에서 stdio.h 헤더에서 제공하는 remove 함수로 로컬에 저장된 파일을 삭제하는 예제입니다. 꼭 리눅스 시스템에서 rm과 같은 명령을 하지 않더라도 c api로도 remove함수로 파일을 삭제할 수 있습니다.
#include <stdio.h>
int main() {
char filename[] = "/tmp/renamed_data.txt";
// 파일 삭제
if (remove(filename) != 0) {
perror("파일 삭제 실패");
return 1;
} else {
printf("파일이 성공적으로 삭제되었습니다.\n");
}
return 0;
}
C 언어 파일 삭제 권한이 없는 경우 remove 파일 삭제 오류 예제
아래는 c언어에서 remove 함수로 삭제하려는 파일에 삭제 권한이 없는 경우 실제 파일이 삭제되지 않는 오류가 발생하는 예제입니다. 우선 파일의 소유권을 수정하고 c에서 remove 함수로 삭제를 시도합니다.
우선 아래와 같이 권한을 수정합니다.
$ sudo chown root:root /tmp/renamed_data.txt
#include <stdio.h>
int main() {
char filename[] = "/tmp/renamed_data.txt";
// 파일 삭제
if (remove(filename) != 0) {
perror("파일 삭제 실패");
return 1;
} else {
printf("파일이 성공적으로 삭제되었습니다.\n");
}
return 0;
}