2016-10-23 53 views
-3

我正在處理CS50問題集。在此函數中,我遍歷一行以確保它符合某些規則:「方法SP請求 - 目標SP HTTP版本CRLF」,其中SP是空格,CRLF是回車/新行。strchr中的多字符字符常量錯誤()

我經過串的最後部分找到CRLF以確認它的存在以下列方式:

//needle2 is a subset of the line, here it's the last bit: "HTTP-version CRLF" 
const char* needle3 = strchr(needle2, '\r\n'); 
if (needle3 == NULL) 
{ 
    error(400); 
    return false; 
} 

我得到編譯此代碼時的錯誤消息:錯誤:

error: multi-character character constant [-Werror,-Wmultichar] 
const char* needle3 = strchr(needle2, '\r\n'); 

據我所知,我正在尋找一個功能中的多個字符,每次只能輸入一個字符。 但是我如何查找CRLF以確保它沒有多字符錯誤?

我嘗試使用strstr()函數與發佈代碼使用它的方式完全相同,並且出現一個錯誤,這更加令人困惑,因爲我使用的是在同一程序中工作的代碼。

+2

使用'strstr'爲 「\ r \ n」'沒有多字符常量;這就是所謂的字符串。 –

+0

kooky的方法使用_「多字符常量」_而不是_「字符串常量」_ – snr

+0

@PaulOgilvie,我試着用strstr()和我得到一個錯誤'不兼容指針整數比較'。 編輯:現在我想起來了,我可能弄亂了語法...我會重新檢查! –

回答

0

正如保羅·奧格爾維建議:用`

//needle2 is a subset of the line, here it's the last bit: "HTTP-version CRLF" 
const char* needle3 = strstr(needle2, "\r\n"); 
if (needle3 == NULL) 
{ 
    error(400); 
    return false; 
} 
相關問題