字符串数组和整形的转换问题

看报错的提示 说是42行strcpy(b,toa)的问题
不会改了

img

#include<iostream>
#include<cstring>
using namespace std;

int length(char c[])
{
    int i;
    for (i = 0; c[i] != '\0'; i++)
    {
    }
    return i;
}
int toi(char a[])
{
    int i, num = 0;
    for (i =0 ; i < length(a); i++)
    {
        num = num * 10 + a[i] - '0';
    }
}
char toa(int n,int len)
{
    int i;
    char a[len-1];
    for(i=0; i<len-1; i++)
    {
        a[i]=n%10;
        n/=10;
    }
    a[i]='\0';
    return a[len-1];
}
int main()
{
    char a[100];
    cin>>a;
    int n;
    n=toi(a);
    cout << n << endl;
    char b[100];
    cin >> b;
    strcpy(b,toa(n,length(a)));
    cout<<b;

}

错误点一:

img

错误点二:

img


修改后的代码:

#include<iostream>
#include<cstring>
using namespace std;

int length(char c[])
{
    int i;
    for (i = 0; c[i] != '\0'; i++)
    {
    }
    return i;
}
int toi(char a[])
{
    int i, num = 0;
    for (i = 0; i < length(a); i++)
    {
        num = num * 10 + a[i] - '0';
    }

    return num;
}
/**将整数转化为字符串
* @param n 需要转化的整数
* @parma buff 字符串的存储区
* @param buff 字符串的存储区的长度
* @param 返回buff
*/
char* toa(int n, char* buff, int len)
{
    int i;
    for (i = 0; i < len - 1; i++)
    {
        buff[i] = n % 10;
        n /= 10;
    }
    buff[i] = '\0';
    return buff;
}
int main()
{
    char a[100];
    cin >> a;
    int n;
    n = toi(a);
    cout << n << endl;
    char b[100];
    cin >> b;
    strcpy(b, toa(n, a, length(a)));
    cout << b;

}
```c++


```

一些小的方面需要改一下,toa函数不知道是不是符合你要求的那个样子,修改了一下,如下:



#include<iostream>
#include<cstring>
using namespace std;
 
int length(char c[])
{
    int i;
    for (i = 0; c[i] != '\0'; i++)
    {
    }
    return i;
}
int toi(char a[])
{
    int i, num = 0;
    for (i =0 ; i < length(a); i++)
    {
        num = num * 10 + a[i] - '0';
    }
    return num; 
}

char at[12];
char * toa(int n)
{
    int i;
    int sum=0;
    int weight=1;
    int num = n;
    for(i=0; sum!=num; i++)
    {
        
        at[i]=n%10+'0';       
        sum+=n%10*weight;
        n/=10;
        weight*=10;
    }
    at[i]='\0';
    return at;
}
int main()
{
    char a[100];
    cin>>a;
    int n;
    n=toi(a);
    cout << n << endl;
       int b;
    cin >> b;
    strcpy(a,toa(b));
    cout<<b;
 
}