我寫了一個函數,它可以縮短請求長度的字符串(單詞句)。我不希望這個句子的切割恰好在一個單詞的中間。所以我跳回n個字符,直到我到達一個空間並在那裏切斷了這個句子。 我的問題是不是真的有問題,編譯我的函數吐出一個警告,說:「警告:值計算未使用」,請參閱代碼中的註釋行。該功能按預期工作。 因此,無論我是盲人還是坐在我的項目上,實際上我都不明白這個警告。請問任何人都可以指出這個功能的缺陷嗎?c函數中指針「未使用計算值」
char *
str_cut(char *s, size_t len) {
char *p = NULL;
int n = 3;
p = s + len;
if (p < (s + strlen (s))) {
/*
* do not cut string in middle of a word.
* if cut-point is no space, reducue string until space reached ...
*/
if (*p != ' ')
while (*p != ' ')
*p--; // TODO: triggers warning: warning: value computed is not used
/* add space for dots and extra space, terminate string */
p += n + 1;
*p = '\0';
/* append dots */
while (n-- && (--p > s))
*p = '.';
}
return s;
}
我在開發機器上編譯器是 「gcc版本4.2.4(Ubuntu的4.2.4-1ubuntu4)」
爲什麼你會用一段時間? (只是好奇) – Blam 2010-12-03 16:40:20
另外,它應該檢查該循環中的「p> s」(就像它在第二個中那樣)。 – Lars 2010-12-03 16:45:37
@Blam:因爲它是Alpha-Code,而且還不是很乾淨。是的,那個「如果」是不需要的。謝謝:-) @lars:真的,謝謝,我剛剛添加了! – 2010-12-03 17:00:30