1. 문제 : 파일에서 특정 문자열을 찾아서 문자열이 존재하는 라인 번호와 해당 라인을 모두 출력하는 프로그램을 작성하시오. (리눅스 grep 명령어를 호출하여 기능을 수행하도록 프로그램 작성)
2. 입력 : 프로그램 실행 시, 인자로 파일명과 찾을 문자열을 입력받는다. 파일명은 1개로 제한한다. (프로그램명 찾을문자열 파일명)
3. 출력 :
a. 파일에서 찾은 문자열이 존재하는 line번호와 해당 라인 정보를 출력한다. (grep 출력 양식 그대로 사용)입력) my_grep float dcl.c 출력) 10: float degress= 0.0012f; 11: float radians; 12: float const pi = 3.14159; 13: float radians2;
b. 문자열이 존재하지 않는 경우에는 아무것도 출력안되도록 한다.(grep 출력 양식 그대로 사용)
입력) my_grep test dcl.c 출력)
c. 파일이 존재하지 않는 경우에는 에러 문구 출력한다.(grep 출력 양식 그대로 사용)
입력) my_grep float test.c 출력) /bin/grep: test.c: No such file or directory
#include <stdio.h>
#include <stdlib.h> //system()
#include <fcntl.h> //open()
#include <unistd.h> //access()
#include <string.h> //strstr()
int main(int argc, char *argv[])
{
const char* search = argv[1];
const char* path = argv[2];
if (argc != 3) {
printf("인자를 잘 못 입력하였습니다.\n");
return 0;
}
char buf[255];
sprintf(buf, "grep -n %s %s", search, path);
system(buf);
printf("system함수가 실행되었습니다.\n");
// execl("/bin/grep", "grep", "-n", search, path, NULL);
// printf("exec함수가 실행되었습니다.\n");
return 0;
}