功能:
int num(char a[]) //将字符串型的数字转化成int
{
int z, x, y;
z = 0;
int m = sizeof(a);
if(m == 1)
z = a[0] - 48;
if(m == 2)
{
x = a[0] - 48;
y = a[1] - 48;
z = x * 10 + y;
}
if(m == 3)
{
x = a[0] - 48;
y = a[1] - 48;
z = a[2] - 48;
z = x * 100 + y * 10 + z;
}
例如:char a[3]={2,15};
,但是num(a) = 0
我不知道为什么。
答案 0 :(得分:3)
声明为char a[]
的函数的参数调整为char *
类型。指针的大小不取决于数组作为参数传递的元素数量。
有效功能可以按以下方式查看
#include <cstring>
//...
int num( const char a[] )//将字符串型的数字转化成int
{
int z,x,y;
size_t n = std::strlen( a );
z = 0;
if( n == 1 )
z = a[0] - '0';
if ( n == 2 )
{
x = a[0] - '0';
y = a[1] - '0';
z = x * 10 + y;
}
if ( n == 3 )
{
x = a[0] - '0';
y = a[1] - '0';
z = a[2] - '0';
z = x * 100 + y * 10 + z;
}
//...
如果只需要从字符数组中形成一个数字,就可以使用标准的C函数atoi。或者你可以写一个循环
z = 0;
for ( size_t i = 0; i < 3 && a[i]; i++ ) z = 10 * z + a[i] - '0';
考虑到如果它是函数必须做的所有事情,那么你应该包括return语句
return z;