[질문]fprintf()함수사용.. 파일에 특정내용을 추가하고 삭제하는문제....

kimyh의 이미지

화일을 열어 맨 마지막줄에 특정내용을 추가한후 프로그램을 다시 실행시키면 맨 마지막줄에 추가한 내용을 삭제하고 새로운 내용으로 추가하는문제 입니다.

아래 해당부분의 소스는 out.txt 화일을 열어 클라이언트 ip의 내용을 추가하고 추가한 내용을 확인하는 내용입니다.
지금은 실행화일을 실행할때마다 마지막줄에 계속 내용이 추가만 되고 있습니다.

out.txt
$memberid = "kimyhkim";
$memberpasswd = "yhkim";

내용 추가후 출력내용
$memberid = "kimyhkim";
$memberpasswd = "yhkim";
$Client_IP = 241.144.xxx.xxx;

해당부분 소스

		stream = fopen("out.txt", "a+");
		fprintf(stream, "$Client_IP = %s;\n", myip() ); 
 
		fclose(stream);
 
		stream = fopen("out.txt", "r");
		ret = fread( buf, 1, 256, stream);
		printf("%s\n", buf);
		fclose(stream);

어떻게 해야 먼저 마지막줄에 추가한 내용을 삭제하고 새로운 내용을 매번 추가할수 있는지 알려 주시면 합니다.
그리고 내용을 추가하는 fprintf()에서 현재는 $Client_IP = 241.144.xxx.xxx; 이런식으로 추가되는데
$Client_IP = "241.144.xxx.xxx"; "가 포함되게 추가 할려면 어떻게 해야 가능한지요.

아시는분 도움 주시면 감사하겠습니다.

lacovnk의 이미지

따옴표로 감싸는 건, 쿼테이션을 이스케이프 시키면 됩니다. " 앞에 역슬래시를 붙여주면 됩니다. " -> \"

 fprintf(stream, "$Client_IP = \"%s\";\n", myip() );

kimyh의 이미지

답변 주신데 감사드립니다.
그런방법이 있었군요.
내용추가하고 삭제하는 방법도 알려주시면 정말 감사하겠습니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

사랑천사의 이미지

그냥 메모리에서 전부 파싱해서 내용을 생성 한 다음에 모드 w로 다시 쓰기 하면 안 되나요? 퍼포먼스가 그리 중요한 프로그램이 아니라면 ㄱ렇게 해도 상관 없어 보이는데요 음음... 그러려면 프로그램 구조를 좀 바꾸셔야 겠지만 음.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)

사람천사

kimyh의 이미지

알려주신내용에서 힌트를 얻어 다음과같이 해결 했습니다.
감사합니다.

stream = fopen("tmp.txt", "w");
		fprintf(stream, "$Client_IP = \"%s\";\n",myip());
		fclose(stream);
		stream = fopen("out.txt", "r");
		ret = fread( buf, 1, 256, stream);
 
		stream = fopen("send.txt", "w"); 
		fprintf(stream, "%s", buf);
		fprintf(stream, "$Client_IP = \"%s\";\n",myip());
		fclose(stream);
 
		stream = fopen("send.txt", "r");
		fseek(stream,0L, 0);
		ret = fread( buf, 1, 256, stream);
		printf("%s\n", buf);
		fclose(stream);
		close(sockfd);

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

사랑천사의 이미지

근대 w 모드로 하시면 기존 파일 데이터가 모두 다 완전히 몽땅 다 덮어쓰기 되버리고 날라 간다는건 아시겠죠 설마. 그래서 저렇게 파일을 분리 시키신 건가 음.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)

사람천사

kimyh의 이미지

지적해 주신 내용 감사합니다.
out.txt 내용은 변동이 없고 클라이언트 아이피만 변동하거든요.
그래서 좀 편법이긴 하지만 send.txt 화일을 새로 만든겁니다.
제가 초보라서 제대로 코딩을 할수가 없어서요.
관심 가져주셔서 정알 감사합니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

사랑천사의 이미지

솔직히 저도 파일 입출력 귀찮고... 따분하고... 별로 잘 하지도 못합니다. 차라리 데이터가 많아 질 거라면 DB를 쓰는게 훨씬 마음에 들죠. 약간 삽질이긴 한대 DB는.. 그래도 파일 입출력 만큼은 아닙니다. 일일히 파싱 해야 되는 부분도 적고... 어떤 내용을 변경 한다거나 할 때도 비교적 쉽습니다. 체계화 되어 있고.. 하지만 지금 작성 하시는 프로그램은 DB에 의존하게 하ㅕㄴ 복잡하게 꼬이기만 할 거 같군요... 아무튼 바라시는 일 잘 되시길 바랍니다.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)

사람천사

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.