错误代码1:
// diff_one_error.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char strSourse[10];
strcpy(strSourse,"0123456789");
char *dest = (char*)malloc(strlen(strSourse));
int i;
for ( i=0;i<10;i++)
{
dest[i] = strSourse[i];
}
dest[i]= '\0';
printf("%s",dest);
system("pause");
return 0;
}
安全代码1:
// diff_one_error.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char strSourse[11];
strcpy(strSourse,"0123456789");
char *dest = (char*)malloc(strlen(strSourse)+1);
int i;
for ( i=0;i<10;i++)
{
dest[i] = strSourse[i];
}
dest[i]= '\0';
printf("%s",dest);
system("pause");
return 0;
}
说明:以上代码是典型的“差一错误”,编程时不能忽略结束符,strcpy是不安全滴,应该使用strncpy取代