Cで2つの文字列を追加しようとしています.
これが私のコードです。s3 を返すと、何も出力されません。それでも、s1 または s2 を返すと、正しく返されます。
また、キーボードでEnterキーを2回押すと、印刷されます"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;
}