|  | 
 
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 ... |