我是C新手,我想知道下面两个代码片段之间的区别。当我尝试执行第一个代码时,它工作得很好,但当我运行第二个代码时,它会给我分段错误。这种行为的原因是什么?

        printf("%c\n",*strptr++);

        printf("%c\n",*(strptr+i));

这是下面的代码。
#include<stdio.h>

int main(void)
{
        char str[100]="My name is Vutukuri";
        int i=0;
        char *strptr;

        strptr=str;

        while(*strptr != '\0')
        {
                printf("%c\n",*strptr++);
                //printf("%c\n",*(strptr+i));
                //i++;
        }
        return 0;
}

最佳答案

完全不同。
第一个片段在strptr处打印字符,然后将strptr递增一次。
第二个片段打印strptr + i处的字符。

09-30 11:16