본문 바로가기

컴퓨터/언어,프로그래밍

[C언어] 문자열 함수 정리 #include char* strcpy(char* s1, const char* s2);s2가 가르키는 문자열을 s1이 가르키는 문자열로 널문자까지 포함하여 복사하고 리턴값은 s1의 시작 주소를 반환한다.char* strncpy(char* s1, const char*s2, size_t n);s2가 가르키는 문자열의 내용을 n byte만큼 s1이 가르키는 문자열로 복사하고 리턴 값은 s1의 시작 주소를 반환한다.char* strcat(char* s1, const char* s2);s2가 가르키는 문자열을 s1이 가르키는 문자열의 끝에 이어서 복사한다. 리턴값은 s1의 시작 주소를 반환한다.char* strncat(char* s1, const char* s2, size_t n);s2가 가르키는 문자열을 .. 더보기
유닉스 중에 #define FILE_NAME 0644 의미가 뭐죠? #define FILE_NAME 0644 유닉스 파일 접근권한 제어를 위해 프로그램 코딩시에 FILE_NAME 이라는 메크로 변수로 대체하여 쓰겠다는 의미입니다. 나중에 프로그램 수정시 편리성을 확보하기 위해서 말입니다. 0644 -rw-r--r-- 읽기,쓰기 - 읽기 -읽기- fd=open("temp.txt",O_RDWR | O_CREAT ,0644); ---> fd=open("result.txt",O_RDWR | O_CREAT , FILE_NAME ); 더보기
파일 입.출력 제 10 장 화일 입출력 대부분의 PC 시스템은 디스크를 기반으로 하는 화일 관리를 하고 있다. 그러므로 화일 입출력은 디스크 입출력이라 말해도 큰 무리가 없다. C 언어에서의 화일 입출력은 더 포괄적인 의미를 가진다. 화일 입출력시 화일(입출력할 대상)은 디스크, 테이프 장치, 프린터 등이 될 수도 있다. 화일을 사용하기 위해서는 어느 화일을 사용할지 지정해야 하는데 이것을 '연다(open)'고 표현한다. 화일을 입출력을 끝낼 때는 사용이 끝났음을 알려주어야 하는데 이것을 '닫는다(close)'라고 말한다. 화일을 닫는 방법은 터보 C에서는 다음 두 방식으로 지원한다. 도스 시스템 호출 기능에 의존하는 저수준 화일 입출력과 C 언어의 고수준 입출력(stream I/O)을 통한 화일 입출력을 지원한다. .. 더보기
파일 디스크립터를 출력으로 지정( creat, dup2) /* 파일 디스크립터를 출력으로 지정 creat, dup2 */ #include int main(void) { int fd; fd = creat("dup_result", 0644); //파일 디스크립트를 복사 하여 새로운 파일 디스크립터를 생성\ //생성된 dup_result를 dup2로 하여금 출력파일 디스크립터로 생성 dup2(fd, STDOUT_FILENO); close(fd); //출력문을 쓰면 파일디스크립터로 쓰는 파일에 출력문이 쓰인다. printf("hello world\n"); return 0; } [출처] 파일 디스크립터를 출력으로 지정( creat, dup2)|작성자 지상렬 더보기
hole있는 파일 생성(creat, write, lseek) /* hole있는 파일 생성 creat, write, lseek */ #include #include int main(void) { int fd; //파일만들다 fd = creat("holefile", 0644); //만든파일에 문자 쓴다. write(fd, "hello", 5); //현재 위치에서 10번째 뒤로 이동 lseek(fd, 10, SEEK_CUR); //문자쓴다. write(fd, "world", 5); //처음 시작점 부터 8192만큼 뒤로 이동 lseek(fd, 8192, SEEK_SET); //문자 쓴다. write(fd, "bye", 3); close(fd); return 0; } [출처] hole있는 파일 생성(creat, write, lseek)|작성자 지상렬 더보기
운영체제(유닉스)에서 open()과 read()함수의 소스코드 다음은 read 함수의 한 예로서 size file(1) ... fine(n)과 같이 사용하여 각 파일들의 크기를 계산하여 출력하는 프로그램이다. #include #include main(int argc, char *argv[]) { int fd; long int size; int n; char buf[BUFSIZ]; if (argc == 1) { fprintf(stderr,"USAGE: %s file(1) file(2) ... file(n)\n",*argv); return (0); } while (--argc > 0) { if ((fd = open(*++argv, O_RDONLY | O_BINARY)) == -1) { fprintf(stderr,"Error: Cannot open %s\n",*argv).. 더보기
dup( ), dup2( ) int dup (int filedes); int dup2 (int filedes , int filedes2); •기능: 사용 중인 파일 디스크립터를 복사 •리턴 값: 성공하면 할당 받은 파일 디스크립터 번호, 실패하면 -1 –dup( ) 함수는 할당 가능한 가장 작은 번호를 리턴한다. –dup2( ) 함수는 filedes2를 리턴한다. •파일 테이블의 해당 항목의 참조 계수를 1 증가 시킨다. 파일 디스크립터 항목의 플래그 (FD_CLOEXEC)는 초기값 (0) 으로 설정된다 •dup2( ) 의 기능 –dup2(fd, STDIN_FILENO) : fd를 표준 입력으로 redirection –dup2(fd, STDOUT_FILENO) : fd를 표준 출력으로 redirection –dup2(fd, STDE.. 더보기
Dup2 를 이용한 Redirection 과 원상복귀 Redirection 이란 어떤 실행에 대한 결과나 입력을 파일에 저장하거나 파일에서 읽어오는 거로써 Unix 계열의 shell 에서 ?>./a.out > b.txt 혹은 ?>cat < a.txt 이런 것을 말하는 것이다. c에서 dup2 를 이용하면 Terminal 에 관한 input 과 output 을 쉽게 redirection 을 할 수 있다 원형은 int dup2(int oldfd, int newfd) 그 input 과 output 의 fd는 stdin = 0 , stdout = 1 이다. output 을 파일로 redirection 하기 위해선 int fd = open("a.txt", O_WRONLY | O_CREAT); dup2(fd, 1); close(fd); printf("HI"); 하면 .. 더보기