2013-12-10 3 views
1

필요합니다. C에서 나는 그 일을 한 방향으로 만 볼 - 변수처럼 로그인, 그 변수에 두 문구의 sprintf, 문자열 변수를 만들 : 당신은 그냥이 연결된 문자열을 인쇄 할 때문자열 정보를 기록하는, 내가 기능을 가지고

#define VERSION "1.1.1" 

char s [256] ; 
sprintf(s,"%s %s","starting programm ",VERSION); 
Log(s,INFO); 

이 같은 큰 일입니다! 다른 언어와 비슷한 것을 만들 수 있습니까?

? VERSION 리터럴 문자열로 확장 처리기 상수 인 경우

+0

var arg 함수는 어떻습니까? http://www.cprogramming.com/tutorial/c/lesson17.html – Eimantas

답변

1

당신이 사용하도록 Log 기능을 변경할 수 있습니다 vsnprintf :

#include <stdarg.h> 
int Log(int level, char const * fmt, ...) 
{ 
    char buffer[256]; 
    int ret; 
    va_list args; 
    va_start(args, fmt); 
    ret = vsnprintf(buffer, 256, fmt, args); 
    va_end(args); 
    /* write log output here */ 
    return ret; 
} 

Log(INFO, "Starting program %s", VERSION); 

256 문자 버퍼 크기가 일정하지 않은 경우 malloc 또는 VLA (가변 길이 배열)를 사용하도록 수정할 수 있습니다.

편집 : 당신의 출력 파일에 끝날 것입니다 경우

대신 vfprintf를 사용하여 버퍼 크기로 엉망 것을 방지 할 수있다.

7

, 당신은 그들을 함께 배치하여 단지를 연결할 수 있습니다 :

Log("starting program " VERSION, INFO) 
관련 문제