汉字字串可以用C++中的strcat连接吗??

ch1="我是";
ch2="中国人";
strcat(ch1,ch2);
cout<<ch1;
怎么报错

楼上的有点小错误啊,呵呵...大意了,来修改下
首先,楼主,要知道如何使用编译器自带的函数
你就必须知道它的函数圆型,首先给出这个函数的函数原型

strcat
原型:extern char *strcat(char *dest,char *src);

用法:#include <string.h>

功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。

下面是修改好的程序代码:

#include<stdio.h>
#include<string.h>
int main()
{
char ch1[80]; //这里不能是无符号的,无符号的貌似不符合函数原型声明,编译器也不能进行强制转换
char ch2[20]; //同上
strcpy(ch1,"我是");
printf("Ch1的值是:%s\n",ch1);
strcpy(ch2,"中国人");
printf("Ch2的值是:%s\n",ch2);
strcat(ch1,ch2);
printf("ch2接到Ch1后,ch1的值是:%s\n",ch1);
}

在补充一点,我用的编译器是vs2008,你也可以用下这个看看,编译的时候无符号的会出现问题

顺便贴下加了unsigned之后的出错信息
1>main.cpp
1>d:\我的文档\visual studio 2008\projects\空工程\空工程\main.cpp(193) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\我的文档\visual studio 2008\projects\空工程\空工程\main.cpp(196) : error C2664: 'strcpy' : cannot convert parameter 1 from 'unsigned char [80]' to 'char *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>d:\我的文档\visual studio 2008\projects\空工程\空工程\main.cpp(198) : error C2664: 'strcpy' : cannot convert parameter 1 from 'unsigned char [20]' to 'char *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>d:\我的文档\visual studio 2008\projects\空工程\空工程\main.cpp(200) : error C2664: 'strcat' : cannot convert parameter 1 from 'unsigned char [80]' to 'char *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-05-22
楼上的在胡扯,声明为unsigned char类型的,也是没有问题的

楼主的写法:
ch1="我是";
ch2="中国人";
strcat(ch1,ch2);
cout<<ch1;
ch1和ch21都指向了常量,主要原因是:
不能对常量进行修改,其次,才是空间问题。

我再重写一下吧,这样是可以的:
#include <iostream.h>
#include <string.h>

int main()
{
char ch1[80]={"我是"};
char *ch2="中国人";
strcat(ch1,ch2);
cout<<"strcat后的字符串是:"<<ch1<<endl;
}
第2个回答  2008-05-22
你这样定义,
ch1的长度才4,ch2长度是6,4个长度不能容纳那么多东西的.

下面给个小例子:
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
unsigned char ch1[80];
unsigned char ch2[20];
strcpy(ch1,"我是");
printf("Ch1的值是:%s\n",ch1);
strcpy(ch2,"中国人");
printf("Ch2的值是:%s\n",ch2);
strcat(ch1,ch2);
printf("ch2接到Ch1后,ch1的值是:%s\n",ch1);
getch();
}

汉字字串可以用C++中的strcat连接吗??
strcat 原型:extern char *strcat(char *dest,char *src);用法:#include <string.h> 功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\\0')并添加'\\0'。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。下面是修改好的程序代码:inclu...

c++ char字符组拼接
主要使用两个函数strcat和strcpy,strcat本身就是连接字符串的,但是要保证空间足够。例:int main(){ char buff[1024];memset(buff, 0, sizeof(buff));const char *buff2 = " test";strcpy(buff, "abc");strcat(buff, buff2);printf("%s", buff);} ...

strcat函数的作用是什么?
在C语言中,strcat函数的原型可以在头文件中找到;而在C++中,它存在于头文件内。使用strcat时需要注意,src和dest所指向的内存区域不能重叠,且dest必须预留足够的空间来存放src字符串,包括结束符。\\0 总结来说,strcat是用于扩展和连接字符串的实用工具,但使用时必须保证内存分配的正确性,以避免潜在...

strcat函数的作用是什么?
strcat函数作用是把src所指向的字符串(包括“\\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\\0”)。保证*dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。strcat是把两个字符串合并到一起,比如 str1[30] = "Hello";str2[] = " China";strcat(str1, str2);...

C++怎么把单个字符与字符串合并为一个字符串
把单个字符先转化成字符串,然后用strcat合并。include <stdio.h>#include <string.h>#include <malloc.h>int main() { char a[10]= "Demo"; char *b = (char *)malloc(sizeof(char) * 2); b[0] = 'c'; b[1] = '\\0'; strcat(a, b); puts(a); free(b); ...

在c++中怎么在循环中实现字符串的拼接?
看蓝色圈圈内的改的符号,你原来是 < 号,改成 > 号就行了

用C语言写出一函式,将两个字串连线,该怎么写
不用strcat()函式,实现将两个字串连线 因为在复制字串2到字串1后面时,回圈中并未复制最后的字串结尾符0,因此要在最后新增上这个0 用C语言程式设计:将两个字串连线起来,不要用strcat函式 #include <stdio.h> int main() { char a[10],b[10],c[20]; int i,j; gets(a...

用c语言c++ 将你的学号,姓名,专业分别放在3个字符数组,使用字符串连 ...
1、实际上就是实现strcat这个字符串库函数,在vc自带的crt源码或者linux平台的glibc库中都有strcat的源码,自己可以查阅参考,看看库开发者是如何写代码的,对于学习C语言非常有用。2、示例 include <stdio.h> char *strcat(char *str1, char *str2){ if((str1==NULL)||(str2==NULL)) throw "...

C++怎样把两个字符串连接在一起
如果是string类直接想加就可以了str1+str2;如果是char类,需要调用函数strcat,如strcat(ch1,ch2)

c++中怎么实现对char*类字符串的拼接
strcat函数可以实现字符串的拼接功能,另外snprintf也可以拼接有限个字符串

相似回答
大家正在搜