我在調試一個代碼,其中一個.ini文件正在讀取字符串名爲Timeout的值(將其讀入名爲rbuf的varibale中)。請告訴我.ini文件的內容何時條件如下:strlen in array
if((strlen(rbuf) > 0) && (rbuf[strlen(rbuf)-1] == '\n')){
rbuf[strlen(rbuf)-1] = '\0';
}
什麼時候調試器進入上面的if循環? 請指定rbuf值的確切內容(緩衝區值)
我在調試一個代碼,其中一個.ini文件正在讀取字符串名爲Timeout的值(將其讀入名爲rbuf的varibale中)。請告訴我.ini文件的內容何時條件如下:strlen in array
if((strlen(rbuf) > 0) && (rbuf[strlen(rbuf)-1] == '\n')){
rbuf[strlen(rbuf)-1] = '\0';
}
什麼時候調試器進入上面的if循環? 請指定rbuf值的確切內容(緩衝區值)
當行具有「字符串長度」(任何大於0的值,不包括空終止符)並且零終結符之前的最後一個字符是一個換行符,它將進入條件塊並將該換行符設置爲空終止符。
爲了告訴你rbuf的確切內容,我需要知道ini文件的內容。但是,舉例來說,如果你有一個線在它的文字,如:
i love programming
讓我們假設有在最後,如果它的未顯示的換行符。
然後RBUF將開始包含:
`我愛編程\ n \ 0'
那20個字節。 Strlen將返回19(不包括末尾的空終止符)。
rbuf [strlen(rbuf)-1]將是'\ n'字符(在緩衝區中的索引18處)。
所以,你的代碼會看到一個新行的索引爲18,並將其設置爲「\ 0」,所以你最終:
i love programming\0\0
。
很難與您所提供的信息說,但:
(strlen的(RBUF)> 0):RBUF中包含非空字符串 (RBUF [strlen的(RBUF)-1] ==' \ n'):rbuf包含以換行符結尾的字符串。
除此之外,rbuf可能只包含換行符。或者它可能包含一系列模板,並以換行符結束。
這3個strlen的傷害了我的眼睛。 – ruslik 2010-07-24 11:35:56
「如果循環」是經典的一年級學生俚語。精明,稱它爲「if語句」,因爲它根本不是一個循環。 – SoapBox 2010-07-24 11:41:14
strchr()看起來更簡單。 – Nyan 2010-07-24 11:53:34