我正在尝试在 C 中附加两个字符串。
所以这是我的代码,如果我返回 s3,则不会打印任何内容。然而,如果我返回 s1 或 s2,它们会正确返回。
此外,如果我只是在键盘上按两次 Enter,它会打印"L¬(."
在 C++ 中,我从来没有遇到过这类问题,哎呀。
有人可以检查他们是否发现问题吗?
#include <stdio.h>
#include <string.h>
/*
Return the result of appending the characters in s2 to s1.
Assumption: enough space has been allocated for s1 to store the extra
characters.
*/
char* append (char s1[ ], char s2[ ]) {
int s1len = strlen (s1);
int s2len = strlen (s2);
int s3len=strlen(s1)+strlen(s2);
// printf("%d", s1len);
char s3[s3len];
int k;
int j;
for(j=0; j<s1len; j++) {
s3[j]=s1[j];
}
for (k=0; k<s2len; k++) {
s3[k+s1len] = s2[k];
}
return s3;
}
int main ( ) {
char str1[10];
char str2[10];
while (1) {
printf ("str1 = ");
if (!gets (str1)) {
return 0;
};
printf ("str2 = ");
if (!gets (str2)) {
return 0;
};
printf ("The result of appending str2 to str1 is %s.\n",
append (str1, str2));
}
return 0;
}