[英]What's wrong with my code function to make strcat function in C?
#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
函数起作用的代码有什么问题。 我希望找到答案。
我认为代码编写,详细了解C语言。 如果是这样,我可以提出一个不使用strlen()的替代实现。 其目的是提出一些非常好的功能的语言。 第一次绕头看可能有点复杂,但是IIRC代码可以在K&R的书The C Programming Language中找到。
开始了:
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++))
;
}
高温超导
您的函数中存在一些问题,下面我对它们进行了更改和评论:
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);
工作示例: https : //ideone.com/ERlFPE
您的代码中有几个错误。 他们是:
1)函数无法在C中返回数组,因此您不需要这样做。 将返回类型从char
更改为wordsum
void
,并删除行return FW;
2)您想打印一个字符串,对吗? 字符串的格式说明符为%s
。 因此写出printf("%s",FW);
而不是printf("%c",FW);
。
3)这样做: FW[i+j]=SW[i];
。 您为什么要在i+j
加1? 只是逻辑地思考。
4)为strlen()
)添加头文件,它是<string.h>
。
5)擦除FW[i+j]=SW[i];
之前和之后的那些星号FW[i+j]=SW[i];
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.