什么';我的代码函数在C中生成strcat函数有什么问题? #包括 #包括 字符字和(字符FW[256],字符SW[256]){ int i; int j=strlen(FW); 对于(i=0;i

什么';我的代码函数在C中生成strcat函数有什么问题? #包括 #包括 字符字和(字符FW[256],字符SW[256]){ int i; int j=strlen(FW); 对于(i=0;i,c,strcat,C,Strcat,您的函数中存在一些问题,我已更改并在下面对其进行了注释: #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; }

您的函数中存在一些问题,我已更改并在下面对其进行了注释:

#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;
}

工作示例:

您的代码中有几个错误。它们是:

1) 函数不能返回C中的数组,您不需要这样做。请将
wordsum的返回类型从
char
更改为
void
,然后删除行
return FW;

2) 你想打印一个字符串,对吗?字符串的格式说明符是
%s
。所以写
printf(“%s”,FW);
而不是
printf(“%c”,FW);

3) 这样做:
FW[i+j]=SW[i];
。为什么要在
i+j
中添加一个额外的1?只需逻辑思考

4) 为
strlen()
添加头文件,它是


5) 删除
FW[i+j]=SW[i];前后的星号标记;

我假设编写代码是为了了解更多关于C语言的信息。如果是这样,我可以提供一个不使用strlen()的替代实现吗。其目的是展示语言中一些非常好的特性。第一次使用时可能有点复杂,但IIRC代码可以在K&R的书《C编程语言》中找到

我们开始:

char *result;
result = wordsum(F,S);
printf("\n%s\n", result);
第一个while循环找到目标字符串的结尾。第二个while循环将源字符串附加到目标字符串。最后,我们返回一个指向原始dest缓冲区的指针

如果函数不返回指针,它可能会更好

char* mystrcat(char *dest, const char *src)
{
    char *ret = dest;

    while (*dest)
        dest++;

    while ((*dest++ = *src++))
        ;

    return ret;
}

HTH

尝试
FW[i+j]=SW[i]
(在当前代码中
SW
FW
0
终止后立即复制)…并编写一个nul字符串终止符
'\0'
printf(“%s”,FW);
char wordsum(…)
@WeatherVane我想这是因为

char* mystrcat(char *dest, const char *src)
{
    char *ret = dest;

    while (*dest)
        dest++;

    while ((*dest++ = *src++))
        ;

    return ret;
}
void mystrcat(char *dest, const char *src)
{
    while (*dest)
        dest++;

    while ((*dest++ = *src++))
        ;
}