为什么这个程序过不了内存检查??求助。。。

就是一个字符串反向输出的问题。

图片说明

            这是我的程序:

            #include<stdio.h>
            #include<string.h>

void printInverse(char*str1,const char*str2);

int main() {
int number=0;
char str1[80]={},str2[40]={};
int i=0;

scanf("%d",&number);

while(i<number) {
    scanf("%s%s",str1,str2);

    printInverse(str1,str2);

    memset(str1,0,sizeof(str1));
    memset(str2,0,sizeof(str2));
    i++;
}

return 0;

}

void printInverse(char*str1,const char*str2) {
char inverse[80]={};
int length=0;
int i=0;

strcat(str1,str2);
length=strlen(str1);

for(i=0;i<length;i++) {
    inverse[i]=str1[length-i-1];
}

printf("%s\n",inverse);

memset(inverse,0,sizeof(inverse));

}

之前几次内存错误把变量初始化就好了,为什么这次还是一直过不了呢??

谢谢!!

不懂怎么进行内存检查,如果是用的str空间太小,导致字符串越界,可以把字符串空间再给大一点,如果是空间用多了,倒叙无非就是将字符倒着输出,只需要打印的话就可以不用inberse[i],要么你直接在str1中交换首尾字符,要么倒着输出ch

提示length=strlen(str1);这里
strlen是不安全的,换成strnlen或者strlen_s看看