关于VC++6.0中的字符串拼接函数strcat
来源:互联网 发布:毕向东java反射 编辑:程序博客网 时间:2024/05/02 00:29
原型:extern char *strcat(char *dest,char *src);
头文件:#include <string>
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针。
举例说明:
- #include<stdio.h>
- #include<string>
- int main()
- {
- printf("hello,world");
- char* command = (char*)malloc(150*sizeof(char)); //分配空间
- command = strcat(command,"mp4info ");
- command = strcat(command,"Alice.mp4 ");
- command = strcat(command," >temp");
- puts(command); //将command显示在控制台窗口
- system(command); //执行command中的命令
- return 0;
- }
说明:上述代码中的mp4info为一个控制台应用程序,用于解析mp4文件的信息,并将信息输出到temp中。
问题描述:上述代码在编译连接时没有报错,但是运行时出现下面的错误
上述代码表面上看没有错误,但其中隐含有系统默认的错误或者程序员在编写代码时没有养成良好的习惯而形成的错误,从输出的那一长串“屯屯屯屯..........”来看,应该是系统为command分配的空间中填入了一些默认值,而strcat函数的功能实际上是从command数组第0位开始依次查找直到找到第一个'\0'字符,然后将src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。而最后的内存不能为读错误,应该是command越界了。
下面的代码可以验证:
- #include<stdio.h>
- #include<string>
- int main()
- {
- printf("hello,world \n");
- char* command = (char*)malloc(150*sizeof(char)); //分配空间
- printf("command[0] = %c \n",command[0]);
- return 0;
- }
下图为输出结果
从上面的代码中可以看到系统为command[0]默认分配了字符'?'。
为了修正上面的问题,其实解决方法很简单,就是为刚分配的空间字符做清零初始化。
代码如下:
- #include<stdio.h>
- #include<string>
- int main()
- {
- printf("hello,world \n");
- char* command = (char*)malloc(150*sizeof(char)); //分配空间
- memset(command,0,150*sizeof(char)); //初始化
- command = strcat(command,"mp4info ");
- command = strcat(command,"Alice.mp4 ");
- command = strcat(command," >temp");
- puts(command); //将command显示在控制台窗口
- system(command); //执行command中的命令
- return 0;
- }
下面为正确输出结果:
开发笔记:
1.在编写程序时应该养成良好的习惯,比如本文中的在使用每一个自定义变量前一定要为其赋予初始值,这样可以避免很多隐性的错误。
http://blog.csdn.net/c_m_deng/article/details/8048211
- 关于VC++6.0中的字符串拼接函数strcat
- 关于VC++6.0中的字符串拼接函数strcat
- 关于VC++6.0中的字符串拼接函数strcat
- strcat();字符串拼接函数
- strcat字符串拼接函数
- LoadRunner字符串拼接函数strcat
- LoadRunner字符串拼接函数strcat
- 两个字符串拼接(不用strcat函数)
- strcat 拼接两个字符串
- c语言,strcat(),字符串拼接
- 字符串函数strcat
- 连接字符串strcat()函数
- 字符串函数strcat
- MySQL中的字符串拼接函数详解
- 重写string.h中的字符串操作函数--strcat
- ORACLE 字符串聚合函数 strCat
- ORACLE 字符串聚合函数 strcat
- VC中的字符串处理函数
- python 简单图像处理(13)
- 文章标题
- LeetCode Remove Duplicates from Sorted List & Remove Duplicates from Sorted List II
- 互联网推送服务原理:长连接+心跳机制
- Think In Python Exercise
- 关于VC++6.0中的字符串拼接函数strcat
- J2EE的13规范之我见
- UIPickerView 选取器(滚轮)—IOS开发
- 黑马程序员——Java基础---网络编程
- 教你如何挣脱天朝枷锁,访问Google
- UML类图中的关系
- 字符串匹配算法总结
- PHP常用代码大全
- java的IO流来实现一个最简单的文件复制