我有一个关于strcat()
函数实现的编程问题。
我一直在尝试解决这个问题,但我遇到了一些访问冲突错误。
我创建的功能:
char str_cat(char str1, char str2)
{
return str1-'\0'+str2;
}
上面的代码有什么问题?
还有一个问题, 是“iostream”头文件?我在哪里可以得到它?
感谢
答案 0 :(得分:1)
上述代码中没有任何内容。
char *
参数char *
+
和-
E.g。像这样:
void strcat(char * Dest, char const * Src) {
char * d = Dest;
while (*d++);
char const * s = Src;
while (*s) { *d++ = *s++; }
*d = 0;
}
为什么你需要这样做吗?标准库中有一个非常好的strcat
,并且有一个非常好的std::string
可以使用+
。
答案 1 :(得分:1)
不幸的是,所有都是这个函数的错误,甚至是返回类型和参数类型。它应该看起来像
char * strcat(const char *str1, const char *str2)
它应该通过分配一个足够大的新内存块来使用malloc(对于C)或new(对于C ++)来保存连接字符串,然后将两个字符串复制到其中。不过,我认为你已经完成了你的(家庭)工作,因为我认为你不了解其中的任何内容。
答案 2 :(得分:1)
不想听到负面声音,但这段代码没有多少权利。
首先,C中的字符串是char *,而不是char。
其次,没有办法按照你希望的方式“添加”或“减去”它们(比如python中的那种可能)。
iostream是C ++的标准I / O标头,它应该与您的发行版捆绑在一起。
我会真的建议一个关于让你前进的指针的教程 - this我发现只是通过谷歌搜索“ansi c指针” - 我猜这个问题要求你找一个C回答而不是C ++,因为在C ++中你会使用std :: string和重载的运算符+。