0

由于某种我无法理解的原因,当我在CMD.

#include <stdio.h>
int main() {
    char array [] = {'b','f','r','o','a','u','v','t','o','\0'};
    int grootteArray = sizeof(array);
    int grootteChar = sizeof(char);               
    int lengteArray = grootteArray / grootteChar;
    int i;
    for (i = 0; i < lengteArray + 1; i + 2) {
        printf("%c", array[i]);
    }
    return 0; 
}
4

4 回答 4

8

每次循环后,您的计数器变量保持不变。您需要通过分配新值来增加它:

for (i=0; i<lengteArray+1; i=i+2) //change to this
于 2013-10-13T12:06:01.917 回答
7

因为i从不改变。您应该分配i + 2i

for (i=0; i<lengteArray+1; i = i + 2) {
                             ↑

您编写它的方式对 的值没有影响i,它只是计算i + 2并且对这个值不做任何事情。

您将获得无限循环,因为i设置为0并且它始终是0.. 所以一旦i < legteArray + 1,它将保持这样。

于 2013-10-13T12:05:44.820 回答
2

i没有在你的循环中修改。还会i < lengteArray + 1导致您打印垃圾值和未定义的行为。

for (i = 0; i < lengteArray; i++){
    printf("%c", array[i]);
}     

如果您有兴趣在i每次迭代中增加 2,那么您可以使用i += 2

for (i = 0; i < lengteArray; i += 2){
    printf("%c", array[i]);
}    
于 2013-10-13T12:06:00.820 回答
2

的值i永远不会改变。

尝试这个:-

for (i=0; i<lengteArray+1; i = i+2) {
于 2013-10-13T12:06:35.083 回答