簡體   English   中英

從C中的MySQL獲得的Strcpy Null值

[英]Strcpy Null Value Obtained From MySQL in C

我正在使用連接器C連接到我的MySQL數據庫。 我最近對數據庫進行的修改現在允許我的url字段中的數據為NULL。 連接器C讀取NULL值似乎沒有任何問題,但是當我嘗試使用strcpy將值傳遞給我的數組結構時,程序崩潰。 這是我的代碼的簡化版本:

mysql_real_connect(conn, server,user,password,database, port, NULL, 0);
mysql_query(conn, "SELECT * FROM main WHERE propType IN ('Single Family', 'Condominium')");
res = mysql_use_result(conn);

while (((row = mysql_fetch_row(res)) != NULL) && (row[0] != NULL)) {

    props[count].uniqueID = atol(row[0]);
    strcpy(props[count].address, row[1]);
    .
    .
    .
    strcpy(props[count].url, row[55]);
    count++;
}

通過跟蹤行的輸出,我確定這行代碼是失敗的,並且僅當row [55]為(空)時才失敗:

strcpy(props[count].url, row[55]);

我對C相當陌生,我認為問題出在試圖將strcpy與空字符串一起使用。

有什么建議么?

正如上面在注釋中建議的那樣,問題是row[55]的值為NULL ,因此strcpy()將崩潰。 也許您想嘗試以下方法:

if (row[55] != NULL)
    strcpy(props[count].url, row[55]);
else
    props[count].url[0] = '\0';

這是另一個示例代碼,如果數據庫包含NULL或空值,則使用位來存儲:

if (row[55] != NULL)
{
    strcpy(props[count].url, row[55]);
    props[count].urlEmpty = false;
}
else
{
    props[count].url = '\0';          // Maybe you can skip this
    props[count].urlEmpty = true;
}

在這種情況下,您需要擴展您的結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM