密码可以吗?当我在函数中使用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
动态分配内存。