【发布时间】:2018-08-23 05:04:07
【问题描述】:
从 C 中的字符串中打印出每个其他字符的最简单方法?我已经尝试使用
遍历数组int main (void)
for(int i = 0; i < strlen(input); i+=2)
{
word[i] += input[i];
}
【问题讨论】:
-
将
strlen(p)移出循环,否则每次迭代都会被一次又一次调用 -
你有其他语言的背景,不是吗?我推荐ericlippert.com/2014/03/21/find-a-simpler-problem 例如通过以下步骤: 1)在 C 中找到一个 HelloWorld 并使其运行 2)将其更改为逐字符打印。 3) 更改为将位置增加 2 而不是 1
-
@phuclv 理论上是的。编译器在过去就是这样做的。现在编译器应该能够分辨出
input没有被循环改变并且循环中没有指针是别名,因此编译器只需要对strlen 表达式求值一次。 -
@Lundin no, most compilers won't optimize that 并且仍然在每个循环中再次调用该函数
-
@Lundin,这仅适用于某些已知功能。否则编译器无法知道返回值是否会在每次迭代中发生变化..