方法比較多,這裡給出一種方法,直接上代碼,看看這些方法錯在什麼地方:
【錯誤方法1】
// EX_EXAM.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
char *Myitoa(int num)
{
char *str,*temp;
int i=0;
while(num)
{
temp[i]=num%10+'0';
num=num/10;
++i;
}
temp[i]=0;
int n=strlen(temp);
for (int k=0;k<n;k++)
str[k]=temp[n-k];
return str;
}
int _tmain(int argc, _TCHAR* argv[])
{
cout<<Myitoa(1236)<<endl;
return 0;
}
【錯誤方法2】
// EX_EXAM.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
char *Myitoa(int num)
{
char str[10],temp[10];
int i=0,k;
while(num)
{
temp[i]=num%10+'0';
num=num/10;
++i;
}
temp[i]=0;
int n=strlen(temp);
for (k=0;k<n;k++)
str[k]=temp[n-k-1];
str[k]=0;
return str;
}
int _tmain(int argc, _TCHAR* argv[])
{
cout<<Myitoa(1236)<<endl;
return 0;
}
【正确方法】
// EX_EXAM.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
char *Myitoa(int num)
{
char *str=new char[10];
char temp[10];
int i=0,k;
while(num)
{
temp[i]=num%10+'0';
num=num/10;
++i;
}
temp[i]=0;
int n=strlen(temp);
for (k=0;k<n;k++)
str[k]=temp[n-k-1];
str[k]=0;
return str;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *p=Myitoa(1236);
cout<<p<<endl;
delete p;
return 0;
}
其他方法:
// EX_EXAM.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
char *Myitoa(char *str,int num)
{
char temp[10];
int i=0,k;
while(num)
{
temp[i]=num%10+'0';
num=num/10;
++i;
}
temp[i]=0;
int n=strlen(temp);
for (k=0;k<n;k++)
str[k]=temp[n-k-1];
str[k]=0;
return str;
}
int _tmain(int argc, _TCHAR* argv[])
{
char str[10];
Myitoa(str,12345);
cout<<str<<endl;
return 0;
}
你知道多少呢????
歡迎讨論。