FILE에 관련된 건데요..
글쓴이: toold / 작성시간: 금, 2003/11/28 - 3:56오후
아래코드는 어떤 함수에 들어있습니다..
그리고 그 함수는 main()함수에 있는 while문안에 있습니다...
while문 안에서 이 함수로 contents의 내용을 계속 바꾸어서 보내주고요..
그래서 아래 코드로 하려는것은 계속 바뀌는 contents의 내용을 md5_siteaddr변수란 이름을 같는 파일안에 계속해서 이어서 저장하려는건데요..
이상하게 저장이 잘 안됩니다...
코드상에 문제가 있나요..?
if((fp=fopen(md5_siteaddr, "a")) != NULL){ write(fileno(fp), contents, sizeof(contents)); fclose(fp); }else printf("파일 생성 실패\n");
전체적으로 보면요...
대충 아래와 같은 모양이거든요
int main() { while(계속 반복) { ...... ...... xxx(md5_siteaddr, contents); ...... ...... } return 0; } void xxx(char *md5_siteaddr, char *contents) { ...... ...... if((fp=fopen(md5_siteaddr, "a")) != NULL){ write(fileno(fp), contents, sizeof(contents)); fclose(fp); }else printf("파일 생성 실패\n"); ...... ...... }
Forums:
[code:1]if((fp=fopen(md5_sit
if((fp=fopen(md5_siteaddr, "a")) != NULL){
이 부분을if((fp=fopen(md5_siteaddr, "a+")) != NULL){
이렇게 바꿔 보시길...지금 리눅머신이 없어서 man 을 못봐 답답한데...
man fopen() 도 함 읽어 보시길...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
[code:1]write(fileno(fp), co
write(fileno(fp), contents, sizeof(contents));
이 부분을
write(fileno(fp), contents, strlen(contents));
해주시면 될 듯 ^^
참고로 fopen 함수 man 페이지 자료 덧붙입니다.
부디 성공하시기를요 ^^
---------------------------------------
세계는 넓고, 할일은 많다.
[code:1]write(fileno(fp), co
write(fileno(fp), contents, sizeof(contents));
이 코드를 아래와 같이 바꿔서 해보시길...write(fileno(fp), contents, strlen(contents));
아님 간단하게...fprintf(fp, "%s", contents);
이렇게 해보시덩가...제가 자세히 다시보니...
sizeof() 이걸 잘못 사용해서 그렇네요...
이넘은 contents의 pointer 크기(4: 주소체계가 4bytes 인지라)가 4인지라...
4개만 항상 찍힐 듯...
그런가요?
걍... 결과랑 같이 보내 주셨다면 더 싶게 답변이 갔을것을...-_-ㅋ
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
추신_정말 머리 속에서 컴파일 하는건 오류가 넘많아...-_-ㅋ
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
제 생각에도 sizeof(contents) 대신 strlen(conten
제 생각에도 sizeof(contents) 대신 strlen(contents)가 될 것 같은데요...
도움 되시길^^;;
ASVU-forever
감사합니다...
참고로, 웬만하면 low level I/O인 read(2), write(
참고로, 웬만하면 low level I/O인 read(2), write(2) 함수를 stream I/O인 FILE, fXXX 계열의 함수와 섞어 쓰시 마시길 바랍니다.
write(2)로 쓸거라면 fopen(3) 대신 open(2)을 쓰시고, fopen(3)을 쓸거라면 write(2) 대신 fwrite(3)나 fputs(3)를 쓰시길 바랍니다.
호환성 떨어집니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기