2014-11-05 2 views
0

아마도 내가 여기에서하는 바보 같은 실수입니다.C 프로그래밍, fprintf()가 올바르게 작동하지 않습니다.

FILE *fp; 
    fp = fopen("test.txt", "a+"); 
    fprintf(fp, time_stamp(),"FLAG 1, Timestamp : %s\n"); 
    fclose(fp); 

나는 함수 에서 타임 스탬프를 얻고있다하지만 FLAG에게 1 인쇄를 타임 스탬프를 제거하면 파일은 타임 스탬프가 아닌 플래그 를 작성. 그러나 함께하지 못한다. 즉

Flag 1, Timestamp : 20141005141116 

내가

20141005145640201410051456402014100514564020141005145640201410051456412014100514564120141 

같은 새로운 라인에 가서 인쇄되지 같은 TEST.TXT에 무엇입니까 출력 : 그

같은

Flag 1, Timestamp : 20141005141116 
Flag 1, Timestamp : 20141005141117 
Flag 1, Timestamp : 20141005141118 
..... 을

이 문제를 해결하십시오.

+0

모든 경고 및 디버그 정보 ('gcc를 컴파일하십시오 -Wall -Wextra-g'). [GCC] (http://gcc.gnu.org/) ... –

+0

을 사용하는 경우 컴파일러에서 경고가 표시됩니다. 여기서 printf가 사용됩니까? – dhein

+0

@ 자이 : OP는 아마도'fprintf'를 생각합니다. –

답변

8

fprintf()에 대한 인수가 잘못된 순서로 있습니다. manual page의 프로토 타입을 봐 :

int fprintf(FILE *stream, const char *format, ...); 

분명히, 형식 문자열을 포맷하는 전에 가지 (변수 부분 ...를) 제공됩니다. time_stamp() 반환 정적 문자열을 가정

, 코드가 있어야한다 : fprintf()

fprintf(fp, "FLAG 1, Timestamp : %s\n", time_stamp()); 
+0

fprintf ("FLAG 1, 타임 스탬프 : % s \ n", fp, 타임 스탬프()); 그가요? 그러므로 오랜 시간이 지난 후에 실제로 C를하고 ... 기본 문제 –

+0

@anupam_on 어? 프로토 타입 또는 위의 대답에서 내가 준 코드를 *보십시오 *. 먼저 파일 포인터, 서식 지정 문자열, 서식을 지정합니다. – unwind

+0

+1. 이것은 아마도 내가 본 가장 좋은 대답 일 것입니다. 간결하고 요점과 모든 관련 링크. – Joshpbarron

3

인수는 다음과 같이해야한다 :

fprintf(fp, "FLAG 1, Timestamp : %s\n", time_stamp()); 
관련 문제