[英]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.