对数字数组实现一个等同于字符串strcat()函数的arrcat(函数)
本帖最后由 bin554385863 于 2019-5-28 20:38 编辑/*数组长度函数*/
#include <stdio.h>
#define e "'E'" //用'E'表示一个数字数组的结束.
size_t arrlen(size_t arr[])
{
size_t i = 1;
while (*(arr + i) != e)
{
i++;
}
return i;
}
#include <stdio.h>
#include "E:\Administrator\Documents\My C\My C Function\Function.c"
void arrcat(size_t arr1[], size_t arr2[])
{
size_t temp;
size_t i, j, k;
for (i = 0; i < arrlen(arr1); i++)
{
temp = arr1;
}
for (j = 0; j < arrlen(arr2); j++)
{
temp = arr2;
}
for (k = 0; k < i + j; k++)
{
arr1 = temp;
arr1 = e;
printf("%d", arr1);//怎么实现用改变后的数组arr1[]覆盖原数组arr1[]?,这里会出现堆栈错误
}
}
void main()
{
int a[] = {1, 2, 3, e};
int b[] = {4, 5, 6, e};
int c[] = {7, 8, 9, e};
arrcat(a, b);
printf("\n");
arrcat(a, c); //这里出现奇怪的异常
}
本帖最后由 人造人 于 2019-5-28 22:08 编辑
你的arrcat函数实现方法就不对,你应该仿照strcat函数
你先应该实现一个strcat
C函数
原型
extern char *strcat(char *dest, const char *src);
头文件
在C中,函数原型存在 <string.h>头文件中。
在C++中,则存在于<cstring>头文件中。
功能
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。
说明
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
https://baike.so.com/doc/5441961-5680308.html 楼主的define能编译通过吗? 第二段代码的24、25、26三行明确声明定义的数组的内容以及数组的大小(先忽略可能出现的编译error)。
第17、和第18行代码是非常危险的操作,这样做可能(肯定)会破坏内存其他地方的数据。
楼主可以把a、b、c的大小声明成100试试
int a = .....; 我就是个弟弟 发表于 2019-5-28 21:12
楼主的define能编译通过吗?
能通过不过会有警告 {:10_269:}可恶差一点就刷到最佳答案了 我就是个弟弟 发表于 2019-5-29 07:32
可恶差一点就刷到最佳答案了
哈哈哈,一起努力
页:
[1]