密码可以吗?当我在函数中使用puts(nstr)时,我确实得到了正确的结果,但是当启用main时,我得到的只是“riends”输出。
使用微软Visual C++快件,如果它有帮助。

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

char* strcpy2 (char* str1, char* str2)
{
    char nstr[20];
    int i,j;
    for (i = 0; str1[i] != '\0'; i++)
    {
        nstr[i] = str1[i];
    }
    for (j = i, i = 0; str2[i]!='\0'; i++, j++)
    {
        nstr[j] = str2[i];
    }
    nstr[j] = '\0';
    return nstr;
}

void main()
{
    char str1[10] = "Hello";
    char str2[10] = ",friends";
    puts(strcpy2(str1, str2));
}

最佳答案

nstr是本地函数。返回指向自动局部变量的指针将调用未定义的行为。把它改成

static char nstr[20];

或者使用strcpy2动态分配内存。

07-26 06:21