|
10鱼币
本帖最后由 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[arrlen(arr1) + arrlen(arr2)];
- size_t i, j, k;
- for (i = 0; i < arrlen(arr1); i++)
- {
- temp[i] = arr1[i];
- }
- for (j = 0; j < arrlen(arr2); j++)
- {
- temp[i + j] = arr2[j];
- }
- for (k = 0; k < i + j; k++)
- {
- arr1[k] = temp[k];
- arr1[k + 1] = e;
- printf("%d", arr1[k]);//怎么实现用改变后的数组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
|
最佳答案
查看完整内容
你的arrcat函数实现方法就不对,你应该仿照strcat函数
你先应该实现一个strcat
C函数
原型
extern char *strcat(char *dest, const char *src);
头文件
在C中,函数原型存在 头文件中。
在C++中,则存在于头文件中。
功能
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。
说明
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
https://baik ...
|