2016-09-19 5 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もし1つの引数(文字列)しか持てない場合は、文字列を構築する必要があります。ここで何かを変更することができれば(例えば、 'struct'にstringとintの両方の値を含むことができるのであれば)、' sprintf'/'snprintf'を使わずにそれを行います。 – Ilya

+0

@J ... Sいいえ、文字列の書式設定は関数を呼び出すことによって厳密に行われます。たとえば、次のような言語でそれを行う演算子はありません。 Python。 – unwind

1

おそらく、あなたはvariable number of arguments to functionsとあなたのものを構築するための便利なGCC format attributesを見つけるかもしれません。しかし、属性にはGCCを使用する必要があり、他のコンパイラに移植する計画はありません。

しかし私はこれらの事を台無しではないだろうし、このことなく、物事を行う方法を見つけ出します。

+1

しかし、GCC形式の属性は他のコンパイラとの互換性がなく、質問にGCCタグはありませんか? – harper

+0

@harper GCC形式の属性は型チェックに便利ですが、重要ではありません。私はその事を編集し、それがGCCだけのためのアプリケーションだと言うでしょう。 –

関連する問題