2016-09-19 4 views
0

나는 인자로서 문자 배열 (즉, 문자열)을 받아들이는 함수를 가지고있다.C에서 이와 같이 문자열을 전달하는 방법이 있습니까?

그러나 정수 변수의 값은 문자열의 일부로도 인쇄해야합니다. 예를 들어

, 나는이 같은 함수가있는 경우 :

int var=10; 
void printStr(char str[]) 
{ 
    printf("%s", str); 
} 

을 나는 메시지 VAR의

"값으로 정수 변수 'VAR'의 값을 인쇄해야 % d 개 ", VAR

이다 나는이

시도

하지만 작동하지 않았습니다.

변수를 인수로 printStr()에 전달하지 않고이를 수행 할 수있는 방법이 있습니까?

이 경우 출력은

VAR의 값은 당신이 문자열의 생성을 위해 기능 sprintf/snprintf 필요 것 같다 (10)

답변

6

입니다해야합니다. 이 같은

시도 뭔가 :

char tempStr[30]; 
snprintf(tempStr, sizeof(tempStr), "The value of var is %d", var); 
printStr(tempStr); 

는 당신이 필요로하는 무엇인가?

+0

@Ilya 그게 좋은 것입니다. 그러나 함수에 전달하기 위해 문자열을 만들지 않고이 작업을 수행 할 수있는 방법이 있습니까? –

+0

@J ... S 하나의 인수 (문자열) 만 허용되면 문자열을 만들어야합니다. 여기서 뭔가를 바꿀 수 있다면 (예를 들어,'struct'에 string과 int 두 값을 모두 포함 할 수 있다면)'sprintf' /'snprintf'없이 할 수 있습니다. – Ilya

+0

@J ... S 아니요, 문자열 형식 지정은 함수를 호출하여 엄격하게 수행됩니다. 예를 들어 다음과 같은 언어로 처리 할 연산자가 없습니다. 파이썬. – unwind

1

아마 variable number of arguments to functionsGCC format attributes이 유용 할 것입니다. 그러나 속성에 대해서는 GCC를 사용해야하며 다른 컴파일러로 이식 할 계획은 없습니다.

그러나 나는 이런 것들을 어지럽히 지 않고 이것없이 일을 할 수있는 방법을 찾아 냈습니다.

+1

하지만 GCC 형식 속성은 다른 컴파일러와 관련하여 이식 할 수 없으며 질문에는 GCC 태그가 없습니다. – harper

+0

@harper GCC 형식 속성은 유형 검사에 유용하지만 중요하지 않습니다. 나는 그것을 편집 할 것이고 GCC에 대해서만 적용 할 것이라고 말할 것이다. –

관련 문제