Я пытаюсь реализовать некоторую «конкатенацию» в C, чтобы использовать пару значений внутри одной строки.
Код выглядит следующим образом:
#include <stdio.h>
#define A "A"
int main() {
char *textArray[] = {"a", "b", "c"};
int intArray[] = {1, 2, 3};
int n;
// count intArray[] lengh
// example taken from the https://www.sanfoundry.com/c-program-number-elements-array/
n = sizeof(intArray)/sizeof(int);
int i;
char *concat;
for (i=0; i<n; i++) {
// check if values are accessible
printf("TEST: Macro: %s, textArray's value: %s, intArray's value: %d\n", A, textArray[i], intArray[i]);
// making concatenation here - this will work
concat = "Macro: " A " textArray's value: '' intArray's value: ''";
// this will NOT work
// expected result == 'Macro: A textArray's value: a intArray's value: 1' etc
// concat = "Macro: " A " textArray's value: " textArray[i] " intArray's value: " intArray[i];
printf("%s\n", concat);
}
return 0;
}
Этокод работает нормально при использовании только значения макроса A
:
$ ./array_test
TEST: Macro: A, textArray's value: a, intArray's value: 1
Macro: A textArray's value: '' intArray's value: ''
TEST: Macro: A, textArray's value: b, intArray's value: 2
Macro: A textArray's value: '' intArray's value: ''
TEST: Macro: A, textArray's value: c, intArray's value: 3
Macro: A textArray's value: '' intArray's value: ''
Но если я пытаюсь использовать textArray[i]
, то есть:
...
// making concatenation here - this will work
// concat = "Macro: " A " textArray's value: '' intArray's value: ''";
// this will NOT work
// expected result == 'Macro: A textArray's value: a intArray's value: 1' etc
concat = "Macro: " A " textArray's value: " textArray[i] " intArray's value: " intArray[i];
printf("%s\n", concat);
...
У меня ошибка во время компиляции:
$ gcc array_test.c -o array_test
array_test.c: In function ‘main’:
array_test.c:26:53: error: expected ‘;’ before ‘textArray’
concat = "Macro: " A " textArray's value: " textArray[i] " intArray's value: " intArray[i];
Итак, вопрос в том, что я делаю не так и как правильно достичь своей цели?
UPD : Конечная цель - получить одну строку для передачи в функцию, например mysql_query()
, например, mysql_query(conn, concat)
, где concat
будет содержать значение, такое как "INSERT INTO TableName VALUES('textValue', 'intValue')"
.