2015-11-18 70 views
1

保存到字符串數組經過數小時的試圖從我的MySQL DB中取出一行並將輸出保存到字符串數組後,我終於決定來這裏尋求幫助,因爲我顯然無法自己解決它。這不是家庭作業,我只是想寫一個簡單的命令行mysql-client,它可以集成到其他C項目中。因爲我不是從數據庫中提取整數,我不能跟的atoi :(工作將mysql_fetch_row()輸出與sprintf(),MySQL C API

我的問題是,我不能夠以的row[0]值寫入到field_array[i]使用sprintf(),因爲不像我想,row[]在每次調用mysql_fetch row()時都沒有增加,實際上,在調用這個命令時,row[0]只會更新MYSQL_RES *struct.current_row的內容,在這種情況下爲MYSQL_RES *headers.current_row因此問題是我想能夠正常地調用mysql_fetch_row(),同時增加int ifield_array[i]能夠成功sprintf()所有值。

下面是相關的代碼。如果有任何缺失,請告訴我:)

使用的變量:我沒有得到工作打算的代碼

MYSQL_ROW row; 
MYSQL_RES *headers; 
char field_array[50][100]; 

部分:

while ((row = mysql_fetch_row(headers))) 
{ 
    for(int i = 0; i < num_fields; i++) 
    { 
     printf("%s\n", row[i] ? row[i] : "NULL"); 
     sprintf(&field_array[i], "%s", row[i]); 
    } 
} 

請幫助我,如果可能的話。我正在使用Connector/C MySQL API,使用mingw32/GCC(Code :: Blocks)工作在Windows 7 x64環境中。

我的意圖是將所有值寫入field_array以便稍後使用它們。

+0

問題是什麼?你沒有說。你在書中找不到任何例子嗎? –

+0

那麼問題是我無法將row [0]的值sprintf()寫入field_array [i],因爲row [0]沒有增加,而是在每次調用mysql_fetch_row()時都被替換。但我不知道那時候,所以我甚至不知道真正的問題是什麼:) – tehw0lf

+0

然後,你還沒有準備好發表一個關於SO的問題!請將問題編輯到問題中以防止關閉/刪除。 –

回答

1

好的,我自己解決了。重點是在while()循環內使用數組增量,而不是for()循環。

現在我獲取所有行值並將它們寫入我的field_array中,然後可以在函數的其餘部分中使用它們。

對於每個人都有同樣的問題,並找到這個話題,這裏是你的答案!

while ((row = mysql_fetch_row(headers))) 
    { 
     for(int i_row = 0; i_row < num_fields; i_row++) 
     { 
      if (row[i_row]) 
      { 
       sprintf(&field_array[i_array][0], "%s", row[i_row]); 
      } 
      else 
      { 
       printf("NULL"); 
      } 
     } 
     i_array++; 
    } 

爲了證明工作正常陣,我用

for (int i = 0; i < (*headers).row_count; i++) 
{ 
    printf("%s\n", field_array[i]); 
} 
+0

你實際上沒有告訴任何人這是什麼問題,所以機會任何人發現這是最小的。但感謝您發佈答案,但! –