私はここ数年 C# を使用しており、現在は C を記述しようとしています。値の配列から文字列をフォーマットしようとしています。「フォーマット文字列」と配列は、実行時までわかりません。
C# では、次のように、配列を使用して可変個引数関数を呼び出すことができます。
using System;
namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
string formatString = "{0}.{1}.{2}.{3}";
string[] formatValues = new[] { "a", "b", "c", "d" };
string formatted = String.Format(formatString, formatValues);
//Do something with formatted (now looks like "a.b.c.d")
}
}
}
Cで私はこれを持っています:
#include <stdio.h>
#include <malloc.h>
int main(int argc, char* argv[])
{
char *formatString = "%s.%s.%s.%s";
char *formatValues[] = {"a","b","c","d"};
char *buffer = (char*)malloc(100 * sizeof(char));
//This doesn't work.....
sprintf(buffer, formatString, formatValues);
//... buffer is junk
return 0;
}
Cでこれを行うにはどうすればよいですか?
(C 標準ライブラリに役立つ便利な関数はありますか? あるいは、配列を使用して varargs 関数を呼び出す方法はありますか?)
引数の数が、私が持っている配列の長さを超えることは決してないことに注意してください。また、型は常に文字列になります。だから私は持っているかもしれません
char *formatString = "My Formatted String %s.%s.%s";
char *formatValues[] = {"a","b","c","d","e"};
しかし、%s が少なすぎることは決してありません。
注: C は Linux の場合は GCC、Windows の場合は Visual Studio (C90) で動作する必要があります。