2014-10-22 5 views

답변

1

아니요, C 표준 라이브러리에는 이러한 기능이 없습니다.

형식 문자열이 매우 제한되어 있으므로 (%s 및 너비 수정 자만 지원) 형식 문자열을 구문 분석하여 직접 구현할 수 있습니다.

0

이 없습니다,하지만 당신은 자신의 기능, 예컨대 :

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

extern char *strdup(const char *); 

int foo(char *str, const char *fmt, char **arr) 
{ 
    int cnt = 0, len = 0, bit = 0; 
    char *buf, *ptr, *tmp; 

    /* fmt must be writable */ 
    buf = ptr = strdup(fmt); 
    if (buf == NULL) { 
     perror("strdup"); 
     exit(EXIT_FAILURE); 
    } 
    while ((tmp = ptr)) { 
     while ((ptr = strchr(ptr, '%'))) { 
      /* Support for %% */ 
      if (ptr[1] == '%') { 
       ptr += 2; 
       continue; 
      } 
      /* Skip first % */ 
      if (bit ^= 1) { 
       ptr += 1; 
       continue; 
      } else break; 
     } 
     if (ptr) *ptr = '\0'; /* Tokenize */ 
     len += sprintf(str + len, tmp, arr[cnt++]); 
     if (ptr) *ptr = '%'; /* Untokenize */ 
    } 
    free(buf); 
    return len; 
} 

int main(void) 
{ 
    char *arr[] = {"one", "two", "three"}; 
    char str[100]; 

    foo(str, "%s, %s, %s", arr); 
    printf("%s\n", str); 
    return 0; 
} 
을 쓸 수 있습니다