2010-05-27 104 views
1

我收到以下錯誤:奇怪GCC錯誤流浪/缺少終端 「字符用C

error: missing terminating " character 

error: stray `\' in program 

在此行的C代碼:

system("sqlite3 -html /home/user/.rtcom-eventlogger/el.db \"SELECT service_id, event_type_id,free_text, remote_uid FROM Events WHERE remote_uid=\'%d\' ORDER BY start_time DESC;\" > lol.html", nr); 

」 nr「是一個整數變量。

我已經o這麼多次,但完全停留在尋找解決方案上。

編輯:如果我沒有明確說明,錯誤是用gcc編譯時的輸出。

+2

請粘貼上面和下面這行代碼 – kennytm 2010-05-27 19:49:37

+3

我不認爲這是有問題的錯誤,但它似乎是在嘗試將printf樣式格式/參數傳遞給'system',並且它不需要它們。那麼它不知道它是什麼與他們聯繫 – nategoose 2010-05-27 21:59:37

回答

2

在C中的雙引號字符串中,我不認爲\'有任何意義。它看起來像你的反斜槓是爲了保護shell中的單引號,這意味着它們應該在字符串內雙擊反斜槓:remote_uid=\\'%d\\'

+0

我想要系統調用打印出來remote_uid ='contents- of-nr-variable'在shell中,我仍然得到一個錯誤信息\\'%d \\' – bleakgadfly 2010-05-27 19:53:21

+0

至少在C99中''''和'''都可以在字符串中使用。 – 2010-05-27 19:53:26

+0

這是ARM系統上的gcc 4.1。 – bleakgadfly 2010-05-27 19:54:59

1

那麼,你不需要逃避字符串內的單引號(例如\'應該是'),但我不確定那會導致你看到的錯誤。

0

我有同樣的問題,試圖做基本相同的事情。

我的問題是我用WinZip來解壓縮源代碼。使用7z後,它工作正常。

0

在我來說,我有一個外部定義變量,逃脫」,像這樣:

#define DEFINE \"string\" 

有人transcluded到這樣的代碼:

cout << DEFINE; // source code 

cout << \"string\"; // source code during compilation