【问题标题】:callback function having issues with extracting double pointer [closed]回调函数在提取双指针时出现问题[关闭]
【发布时间】:2012-07-01 10:44:04
【问题描述】:
// issue with the following not returning info or just stalling... but no errors
static int callback(void *voidParam, int argc, char **argv, char **azColName)
{   
    static int k = 0;
    myReturn structReturn;

    char *cTempF = (argv[0] ? argv[0] : "NULL");
    memcpy(&structReturn.cFirstName, cTempF, sizeof(cTempF));// tried strlen(cTempF)... no help

    memcpy(voidParam + k * sizeof(structReturn), &structReturn, sizeof(structReturn));

    k++;
}

myReturn *structReturn = (myReturn*)malloc(sizeof(myReturn) * 20);

rc = sqlite3_exec(db, pSQL, callback, structReturn, &zErrMsg);

typedef struct ReturnTag
{
    char cFirstName[100];
    char cLastName[100];
    short int iAge;
}myReturn;

【问题讨论】:

  • 您遇到了什么问题?请更准确地描述问题。
  • 我认为我在 cmets 中描述得很好......当我执行 "memcpy(&structReturn.cLastName, cTempL, strlen(cTempL));" 时没有返回任何内容对于“char *cTempF = (argv[0] ? argv[0] : "NULL");"但返回 "char cTempF[] = "dog";"
  • “什么都不返回”是什么意思?你是说memcpy 不会将内存内容从cTempF 复制到structReturn.cFirstName
  • 好像线程被暂停了...但没有出现错误。但正如我所说,如果我执行 "char cTempF[] = "dog";" ....它工作正常。所以它似乎是 "char *cTempF = (argv[0] ? argv[0] : "NULL");"... 但我可以打印 cTempF。
  • 请用完整的句子描述纯文本,你期望会发生什么,以及会发生什么。

标签: objective-c c cocoa-touch sqlite


【解决方案1】:

解决了...需要:memset(&structReturn.cFirstName, '\0', 100);

static int callback(void *voidParam, int argc, char **argv, char **azColName)
{   
    static int k = 0;
    myReturn structReturn;

    char *cTempF = (argv[0] ? argv[0] : "NULL");
    memset(&structReturn.cFirstName, '\0', 100); // <--- needed here
    memcpy(&structReturn.cFirstName, cTempF, strlen(cTempF));

    memcpy(voidParam + k * sizeof(structReturn), &structReturn, sizeof(structReturn));

    k++;
}

【讨论】:

  • 更有可能您只需要复制 0 终止符 memcpy(&amp;structReturn.cFirstName, cTempF, strlen(cTempF) + 1)
猜你喜欢
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多