2012-03-27 69 views
0

我有一個問題, 我試圖此錯誤預期「字符」

if (strncmp(m_DSServer, "TCP:", 4) != 0) 
    return DS_AS_PROCESS_NAME_INCORRECT; 
if 
    if(strchr(char *(m_DSServer[4]),':')== NULL) //here it is giving me primary-expression before 'char 
     return DS_AS_PROCESS_NAME_INCORRECT; 
else 
    if(strchr(m_DSServer[4],'/')== NULL) 
     return DS_AS_PROCESS_NAME_INCORRECT; 
+0

我懷疑你需要char * cast周圍的括號。像(char *)一樣。但是,發佈更多的代碼可能會有所幫助。另外,如果實際上是重複的,或者是一個錯字? – Corbin 2012-03-27 06:45:45

+0

我試圖格式化這段代碼,但放棄了。我無法理解什麼是代碼,什麼是文本。 – Nawaz 2012-03-27 06:45:51

回答

2

如果你想開始從5字符搜索前主表達式,做

strchr(&m_DSServer[4],':') 
+0

謝謝你,這就是我所問的 – 2012-03-27 07:31:47

0
if (strchr(char *(m_DSServer[4]),':') == NULL) 
      ^^^^^^^^^^^^^^^^^^^^^ 

char *(m_DSServer[4])是無稽之談。我的猜測是你想搜索字符串:,從第4個字符開始。在這種情況下,需要一個指針到第4個字:

if (strchr(m_DSServer+4,':') == NULL) 
      ^^^^^^^^^^^^ 
1

首先,具有type(value)形式投語法是一個主要的C++語法。它在C中不被支持。而你的問題被標記爲[C],而不是[C++]。在C語言中,如果要執行強制轉換,您必須使用(type) value語法。

其次,即使在C++中type(value)鑄造語法要求type部分包括一個「契約」類型說明符,即即使在C++你不能在此上下文中使用char *

第三,無論您使用的語法是什麼,通過將m_DSServer[4]值(顯然是char)轉換爲指針類型完全不清楚您要做什麼。這只是沒有任何意義。

如果您想搜索:字符,從字符串m_DSServer的第4個位置開始,您應該執行類似strchr(&m_DSServer[4], ':')的操作。沒有必要施放。