파일 처리에 대한 질문 드립니다.
제가 원하는 것은 어느 파일을 열고, 그 파일에서 특정 단어가 들어간 라인을 찾아서 지우는 것입니다.
우선 파일은 "r+" (갱신)으로 열고 fgets()로 해당 line까지는 찾았는데, 어떻게 해야 그 라인이 지워지는지 모르겠네요.. -.-
아시는 분 답변 부탁드립니다..
그라인 자체의 완전한 삭제를 원한다면, 파일을 다시 기록 하십시오. 만일 해당 라인을 스페이스등 다른 문자로 체워도 상관 없다면, fseek등을 이용하여 현재의 위치를 되돌린 다음 다른 문자로 체워 넣으세요.
>>>행복한 웃음<<<
죄송하지만, "파일을 다시 기록 "의 구체적인 뜻이 뭔가요?
원본 파일을 지우는 기능은 없습니다.
#include <iostream> #include <fstream> #include <string> #include <iterator> #include <algorithm> template <typename T> struct line { T str_; line() {} line(const std::string& s) : str_(s) {} operator T() const { return str_; } }; template <typename T> std::istream& operator>>(std::istream& is, line<T>& sl) { return std::getline(is, sl.str_); } template <typename T> std::ostream& operator<<(std::ostream& os, const line<T>& sl) { return os << sl.str_ << std::endl; } template <typename T> struct line_include { T str_; line_include(const T& s) : str_(s) {} bool operator()(const line<T>& l) { return l.str_.find(str_) != T::npos; } }; int main(int argc, char* argv[]) { using namespace std; if (argc >= 3) remove_copy_if( istream_iterator<line<string> >(ifstream(argv[1])), istream_iterator<line<string> >(), ostream_iterator<line<string> >(ofstream(argv[2])), line_include<string>(string(argv[3]))); else cout << "Usage: removeline infile outfle word\n"; return 0; }
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
그라인 자체의 완전한 삭제를 원한다면, 파일을 다시 기록 하십시오.만
그라인 자체의 완전한 삭제를 원한다면, 파일을 다시 기록 하십시오.
만일 해당 라인을 스페이스등 다른 문자로 체워도 상관 없다면, fseek등을 이용하여 현재의 위치를 되돌린 다음 다른 문자로 체워 넣으세요.
>>>행복한 웃음<<<
죄송하지만, "파일을 다시 기록 "의 구체적인 뜻이 뭔가요?
죄송하지만, "파일을 다시 기록 "의 구체적인 뜻이 뭔가요?
[quote="mindon"]죄송하지만, "파일을 다시 기록 "의 구체적
입력 파일을 읽어 다른 파일에 저장하는 겁니다.
그때 원하는 라인은 저장하지 않으면 되죠.
마지막에 저장된 파일을 원래의 파일로 mv 하면, 결국 다시 기록하는게 됩니다.
C++로 한번 만들어봤습니다
원본 파일을 지우는 기능은 없습니다.
main()에서는 one-liner가 되게 만들었습니다. 8)
댓글 달기