在C中打印字符串时出现问题

时间:2016-07-30 03:45:05

标签: c pointers char

以下是两个代码块,我无法通过以下方式弄清楚输出的原因。在第一个代码中,我使用printf打印返回的指针,因此它也可以在main函数中正常工作,但在第二个代码中,当我删除printf语句时,它会打印其他内容。输出每次都会改变。

两种情况的主要功能相同。

char * updateSlidingWindow(char * slide, char newChar) {
    char * c, dst[strlen(slide)];
    int dstindex = 0;
    c = slide + 1;
    while(*c != '\0')
        dst[dstindex++] = (char)*c++;
    dst[dstindex++] = newChar;
    dst[dstindex] = '\0';
    slide = dst;
    printf("%s\n", slide);  // This line is commented for testing. It changes output.
    return slide;
   }

//主要功能

int main(void) {
    char * SLIDING_WINDOW = "Hello";
    SLIDING_WINDOW = updateSlidingWindow(SLIDING_WINDOW, 'D');

    printf("%s\n", SLIDING_WINDOW);
    return 0;
}

输出 - 使用printf更新功能 -

elloD
elloD

更新功能中没有printf -

����

0 个答案:

没有答案