2010-05-27 102 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