Ударих се в стената с програма, която използва вграден 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