【发布时间】:2011-05-19 20:39:56
【问题描述】:
我编写了一个函数,它可以按要求的长度缩短字符串(单词的句子)。我不希望句子的删减恰好在一个单词的中间。所以我跳过 n 个字符,直到我到达一个空格并在那里剪切句子字符串。 我的问题并不是真正的问题,编译我的函数会吐出一条警告,上面写着“警告:未使用计算的值”,请参阅代码中的注释行。该功能按预期工作。 所以要么我是盲人,要么我对我的项目坐得太久,实际上我不明白这个警告。有人可以指出函数中的缺陷吗?
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 version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)”
【问题讨论】:
-
你为什么使用 if then a while? (只是好奇)
-
另外,它应该在那个循环中检查
p > s(就像在第二个循环中所做的那样)。 -
@Blam:因为它是 Alpha 代码,还不是很干净。是的,不需要那个“如果”。谢谢 :-) @lars:是的,谢谢,我刚刚添加了!
-
感谢上帝编译器居然抱怨^^。
-
真的!这就是为什么我在开发过程中总是有编译命令的“-Wall”开关!