Я наткнулся на программу, которая использует встроенный SQL для извлечения строк из таблицы базы данных, сохраняет данные строк в структуре, а затем обрабатывает эти данные, а результаты сохраняются в другой структуре и помещаются в связанный список. Структура, в которой хранятся данные выборки, выглядит следующим образом:
struct rowstruct {
char *first;
char *last;
long amt;
} client;
и моя структура, которую я использую для хранения обработанных данных (и впоследствии в качестве узла в моем связанном списке), выглядит так:
struct mystruct {
char *firstN;
char *lastN;
long total;
} data;
Моя проблема в том, что при каждом цикле выборки мне нужно копировать значения client.first и client.last в data.firstN и data.lastN, но я не могу заставить его работать. Следующее, используя оператор присваивания, просто копирует указатель, а не значение:
data.firstN = client.first;
data.lastN = client.last;
Если я вывожу data.firstN и data.lastN после первой итерации моего цикла, значения отображаются правильно, но после второй итерации выборки первый узел в моем списке будет отражать значения из второй выборки, а не первый.
strcpy скомпилируется, но во время выполнения произойдет сбой из-за ошибки сегментации, которая, если читать здесь, связана с использованием char*, хотя я не думаю, что могу использовать char[] или строку при извлечении данных с помощью встроенного SQL, поэтому это похоже на тупик.
Я уверен, что есть способ сделать это, и, вероятно, для большинства здесь это очевидно, но я в растерянности. Любая помощь будет оценена по достоинству.
Спасибо!
mystruct
char *
s? т.е.data.firstN = malloc (sizeNeeded)
- возможно черезstrlen
- тогдаstrcpy
обратите внимание, что я бы предпочелstrncpy
или другую безопасную альтернативу (strcpy_s
?) - person im so confused   schedule 12.10.2012mystruct
кажется избыточным, хотя - person Alexander   schedule 12.10.2012