300個のシンボルを含むバッファーを作成し、それを以下に説明する関数に渡す必要があります。
void printThis(char *info);
このバッファを生成するための最良の方法は何ですか?
これが良ければ:
char *buffer = new char()
次に、このバッファに文字を追加する方法は?次の方法は適切ではなく、アクセス違反が発生します。
for (int i=0; i<300;i++)
{
sprintf(s,"%s",'a');
}
300個のシンボルを含むバッファーを作成し、それを以下に説明する関数に渡す必要があります。
void printThis(char *info);
このバッファを生成するための最良の方法は何ですか?
これが良ければ:
char *buffer = new char()
次に、このバッファに文字を追加する方法は?次の方法は適切ではなく、アクセス違反が発生します。
for (int i=0; i<300;i++)
{
sprintf(s,"%s",'a');
}
std::vector<char> buffer(300, 'a');
// I'm guessing that printThis wants a zero-terminated string
buffer.push_back(0);
printThis(&buffer[0]);
C ++ 11ライブラリを使用している場合は、buffer.data()
より見栄えがよい場合があります&buffer[0]
。
本当に自分でメモリを管理したい場合(ヒント:そうではありません)、自動配列を作成します。
char buffer[300];
または動的配列:
char * buffer = new char[300];
// Don't forget to delete it, and hope than nothing threw an exception
delete [] buffer;
これが良ければ:
そうではありません。本当に、本当に、そうではありません。それはバッファでさえありません。また、これは良い考えにさえ近いものではありません。
std::string s;
for(int i = 0; i < 300; i++)
s.push_back('a'); // good job all round
std::cout << s; // 300*a. Why? Who knows?
printThis(s.c_str());