运行时错误 - c中的指针

时间:2016-03-28 22:31:01

标签: c function pointers

我写了一个用英文打印所有字母的程序,但是我编写的代码中存在运行时错误。它在哪里?为什么会这样? 你能帮我解决一下吗?

void printArray(char* p, int len)
{
    for( p ; p < p + len ; p++ )
    {
        printf("%c", *p);
    }
    printf("\n");
}

int main()
{
    char* abc = "abcdefghijklmnopqrstuvwxyz";
    printArray(abc, 26);
    return 0;
}

3 个答案:

答案 0 :(得分:4)

p何时不会低于p + len

for( p ; p < p + len ; p++ ) // Loop forever

您可能需要以下内容:

char* stop = p + len;
for( p ; p < stop ; p++ )

答案 1 :(得分:1)

p < p + len绝不是假的 - &gt;无限循环。

建议

for(int i = 0; i<len ; i++ )
{
    printf("%c", p[i]);
}

答案 2 :(得分:0)

因为你在检查它时正在编辑p&#34; p&lt; p + len&#34;这个循环永远不会结束。 p将始终小于自身加上常数。 试试吧

char* end = p + len;
for(p ; p < end; p++)

然后它应该工作