次のコード行では、キー文字列が文字列内に見つかった場合に、変数文字列をキー文字列に置き換えようとしています。たとえば、文字列「hello VARIABLE world」がある場合、KEY 値が VARIABLE 値の代わりに配置され、元の文字列ではなく文字列「hello KEY world」が作成されます。そのための私の理論は、(文字列内の) 変数の最初の文字まで文字列をトークン化し (newfirst)、変数文字をトークン化し (newtrash)、文字列の残りをトークン化する (newsecond) というものでした。次に、newfirst + key + newsecond を連結します。問題は、myVariables[i].variable[0] と myVariables[i].variable[varlength - 1] が最初の 2 行で strtok 関数に char として読み込まれ、コンパイラが const char* を要求していることです。
これを表現する簡単な方法: strtok 関数の区切り文字として、char 配列 (ユーザー入力なのでハードコーディングできない) から個々の char を渡すにはどうすればよいですか?
** 明確にするために、これはプログラム全体ではなく、問題への関心のある行にすぎません
strcpy(newfirst, strtok(testString, myVariables[i].variable[0]));
strcpy(newtrash, strtok( NULL, myVariables[i].variable[varlength - 1]));
strcpy(newsecond, strtok(NULL, "\n"));
strcat(newfirst, myVariables[i].key);
strcat(newfirst, newsecond);
struct variablePairs {
char variable[20];
char key[20];
};