#include <stdio.h>
#include <stdlib.h>
char wordsum(char FW[256],char SW[256]){
int i;
int j=strlen(FW);
for (i=0;i<=strlen(SW);i++)
FW[i+j+1]=SW[i];
printf("%c",FW);
return FW;
}
int main()
{
char F[256];
char S[256];
printf("Enter the first word\n");
gets(F);
printf("Enter the Second word\n");
gets(S);
wordsum(F,S);
return 0;
}
我不知道我的代码有什么问题需要strcat
功能。我希望找到答案。
答案 0 :(得分:2)
我假设编写代码是为了更多地了解C语言。如果是这样,我可以提出一个不使用strlen()的替代实现。目的是介绍该语言中一些非常好的功能。第一次将头部包裹起来可能有点复杂,但IIRC的代码可以在K&amp; R的书“C编程语言”中找到。
我们走了:
char* mystrcat(char *dest, const char *src)
{
char *ret = dest;
while (*dest)
dest++;
while ((*dest++ = *src++))
;
return ret;
}
第一个while循环找到目标字符串的结尾。第二个while循环将源字符串附加到目标字符串。最后,我们返回一个指向原始dest缓冲区的指针。
如果没有返回指针,该函数可能会更好。
void mystrcat(char *dest, const char *src)
{
while (*dest)
dest++;
while ((*dest++ = *src++))
;
}
HTH
答案 1 :(得分:1)
您的功能存在一些问题,我已在下面进行了更改和评论:
char *wordsum(char FW[256],char SW[256]){ // correct function type
int i;
int j=strlen(FW);
for (i = 0; i <= strlen(SW); i++)
FW[i+j] = SW[i]; //change 'i + j + 1' to 'i + j'
printf("%s",FW); //change format specifier as you are printing string not character
return FW;
}
然后点忘记使用调用函数中的char*
变量捕获返回的指针(此处为main()
)
char *result;
result = wordsum(F,S);
printf("\n%s\n", result);
答案 2 :(得分:1)
您的代码中存在多个错误。他们是:
1)函数不能在C中返回数组,您不需要这样做。将返回类型从char
更改为void
的{{1}}并删除行wordsum
2)你想打印一个字符串,对吗?字符串的格式说明符为return FW;
。所以请写%s
而不是printf("%s",FW);
。
3)这样做:printf("%c",FW);
。为什么要在FW[i+j]=SW[i];
添加1?只是逻辑思考。
4)为i+j
添加标题文件,它是strlen()
。
5)删除<string.h>
之前和之后的星号标记。