lzth.net
当前位置:首页 >> C语言关于strCAt函数使用报错的疑问。 >>

C语言关于strCAt函数使用报错的疑问。

1、strcat要求输入的两个参数均为“以\0结尾的字符串”.你给出的两个参数均不符合这个要求2、strcat的运行结果是参数1变成两个字符串的连接,并以\0结尾要求参数1的空间足够容纳连接之后的字符串并且可写入,你的参数不符合这个要求(p.s. 楼下给出的程序也不符合这个要求)没有满足它的要求就调用它,所以你的程序出错了

strcat的用法并没有错,只是缺少对应的头文件而已.strcat函数在string.h头文件中声明,包含即可#include

看报错信息啊,有很多种解决方案,1. 按照提示使用strcat_s代替strcat2. 关闭SDL检查.项目-属性-C/C++-常规-SDL检查-否3. 在文件顶部加入一行:#define _CRT_SECURE_NO_WARNINGS4. 在文件顶部加入一行:#pragma warning(disable:4996)

void mystrcat( char * src,const char * des){while(*src++);while(*src++=*des++);}楼主说的是这个不行吧?这是因为src的指针先加1再比较,while 之后 src 指的是'\0'.后面的while是在'\0'之后加字符串.所以输出的仍然是原来的字符串.比方说src="abcde",des="fghijkl",while(*src++); 之后 src 指的是e后面的'\0',while(*src++=*des++); 之后a 里面就是"abcde\0fghijkl".

你这两个形参怎么能共用一个变量地址.

虽然没over,实际已经溢出了.strcat(des,src) 不进行边界检查,所以des的大小必须得满足拼接后的字符串大小. s1[9]={"English",0,0} 后拼上 "Eng\0" 成为 "

程序是正常没什么问题的,估计是你那个平台识别不到你写的那个函数,你可以试试在main函数里面声明一下my_strcat.还有就是你定义str1长度为100,那str1+str2的长度最好不要超过100,不然str1会放不下的哦.

访问越界,因为ch1的大小只有8,而你用strcat进行连接的时候,会把ch2的内容写到ch1第8个位置以及以后的不属于ch1的内存,所以会报错误.strcat是这样定义的:extern char *strcat(char *dest,char *src);src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串.

用法:#include <string.h>在C++中,则存在于<cstring>头文件中.strcat原型:extern char *strcat(char *dest,char *src);功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'.说明:src和dest所指内存区域不可以重叠且

strcat的用法如下: strcat(待追加的字符串,追加的内容字符串) 该函数将第二个参数中指向的字符串拼接到第一个参数指向字符串的末尾 两个字符串都应该是以0结尾的字符串 一旦出现下面的情况,则可能导致无法预料的结果: 1 待追加字符串的缓冲区不够长,追加导致溢出. 2 待追加的字符串指针或者追加字符串的指针为空 3 待追加的字符串中间包含0字符,则0字符后面的字符串可能被覆盖! 4 追加字符串中间包含0字符,则0字符之后的字符串可能无法拼接到指定字符串末尾 5 无法处理Unicode字符

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com