什么';我的代码函数在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++))
;
}