我试图实现strcat()
,所以我想出了这段代码。但是,我不知道它有什么问题?它给了我分段错误。
我在想这可能是内存分配混乱?是吗?如何在不使用malloc()
的情况下修复它?
#include <stdio.h>
char *strcat(char *s,char *d){
while(*s++ != '\0') ;
while(*s++ = *d++) ;
*s = '\0';
return s;
}
int main(){
char s[20]= "source";
char d[20]= "dest";
printf("%s\n",strcat(s,d));
return 0;
}
我必须在d
之前结束s
。
答案 0 :(得分:2)
dbContext.Configuration.LazyLoadingEnabled = false;
不够长修复:
s
答案 1 :(得分:1)
s,d是字符串常量!你永远不应该做这样的事情。 有一个像char s [100]这样的大数组,复制源代码,然后使用你的连接。请记住,s应该有足够的空间来容纳d!
的内容答案 2 :(得分:1)
我修好了
SELECT * FROM customer WHERE bday BETWEEN "2015-10-01" AND "2015-11-01"
答案 3 :(得分:0)
您声明的字符串s和d是常量字符串文字,您无法修改它们。 你应该声明两个char数组,并确保你要复制的数组大到足以容纳另一个。
#include <stdio.h>
char *strcat(char *s,char *d)
{
//Get length of s string
size_t len = strlen(s);
//declare new pointer and assign it the value of s
char *ptr = s;
//move the pointer to the end of the string
ptr += len;
//copy contentes of d string to s string
while( *d != '\0' )
{
*ptr++ = *d++;
}
*ptr = '\0';
//return s
return s;
}
int main()
{
//make sure s array length is big enough to accomodate d string
char s[50] = "source";
char d[] = "dest";
printf("%s\n",strcat(s,d));
return 0;
}