C语言 51单片机 数组后添加字符问题

我在做51单片机编程练习时遇到的问题。这个函数功能主要想实现:外部传进一个unsigned char 的字符串,我希望在这个字符串后面添加4个‘A’
然后返回这个数组的指针,我不知道我这个哪错了,调试了很久。或者请给我一个你的解决算法,谢谢

unsigned char* chanStr(unsigned char str[])
{
int j;
unsigned char *p,*q;
int num=howLong(str);
p=(unsigned char*)malloc((num+5)*sizeof(unsigned char));
q=p;
*(p+num)='A';
*(p+num+1)='A';
*(p+num+2)='A';
*(p+num+3)='A';
*(p+num+4)='\0';
p=q;
for(j=0;j<num+4;j++)
{
*p=str[j];
p++;
}
return q;
}
最新回答
会输但不会哭

2024-05-21 07:06:04

写的太乱了,没必要!

首先头文件要写#include "string.h"

之后就开始你的函数了:

char chanstr(char str[])

{

    char a[5]="AAAA";


    strcat(str,a);


}

这样就可以了!

之后你在主函数中直接输出str函数传过来的数组或指针就可以了!

数组之间的传递是不用return的!!!!

下图是我做的一个小例子:

像个路人

2024-05-21 07:30:47

将for ( j=0;j<num+4;j++ )改成for ( j=0;j<num;j++ )
追问
改了还是不行
追答
不行的现象是什么?
试试这个:

unsigned char* chanStr(unsigned char *str)
{
int j;
unsigned char *p,*q;
int num=howLong(str);
p=(unsigned char*)malloc((num+5)*sizeof(unsigned char));
if ( p )
{ q=p; for ( j=0;j<num;j++,q++,str++ ) (*q)=(*str);
for ( j=0;j<4;j++,q++ ) (*q)='A';
(*q)=0;

}
return p;
}
你是我所有的梦

2024-05-21 03:00:50

把全部的程序发过来,