strcat小心使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengshengli/article/details/83862368

      strcat是对字符串的拼接,有时候拿过来用挺方便的。但是大面积用,代码变得不清晰,都不知道字符串到底编程了什么。还有另外一点,如果定义了一个全局的字符串,函数循环里需要对字符串拼接后使用,如果不停的循环,就相当于不停的追加,可能造成内存溢出,或者资源崩溃。

例子:

     ID; //全局变量(CString类型)

      //循环

   {

       char *stemp = ID.GetBuffer(ID.GetLength()+1);//CString转char*

      strcat(stemp, "\r\n");

      fwrite(stemp, strlen(stemp1),1,fp);

   }

stemp其实是指向ID的字符串,ID每次都会加一个回车和换行。

解决方法:

ID赋值给一个局部变量:

 ID; //全局变量(CString类型)

      //循环

   {

        CString Name = ID;

       char *stemp = Name.GetBuffer(Name.GetLength()+1);//CString转char*

      strcat(stemp, "\r\n");

      fwrite(stemp, strlen(stemp1),1,fp);

   }

猜你喜欢

转载自blog.csdn.net/pengshengli/article/details/83862368