簡體   English   中英

排列成陣列

[英]strlen in array

我正在調試一個代碼,其中正在讀取.ini文件以獲取名為Timeout的字符串的值(該字符串被放入名為rbuf的變量中)。當條件如下時,請告訴我.ini文件的內容:

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可能只包含換行符。 或者它可能包含一系列字符,並以換行符結尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM