主要功能无法打印出与结构功能相同的o / p为什么?
或
memcpy不会复制整个数组
请帮助。
预期o / p
7 4 5 6 2
7 4 5 6 2
但是
获取o / p
7 4 5 6 2
7 4垃圾垃圾
提前谢谢。
#include <stdio.h>
#include <string.h>
struct Result {
int output[100];
};
struct Result my(int length, int path, int input[]){
int temp=input[path-1];
for(int i=path-1; i>0; --i){
input[i]=input[i-1];
}
input[0]=temp;
for (int i = 0; i <= length; i++) {
printf(" %d",input[i]);
}
struct Result result;
memcpy (result.output, input, sizeof(strlen(input)));
return result;
}
int main(void){
int a[]={4,5,6,7,2};
struct Result res = my(4,4,a);
printf("\n");
for (int i = 0; i <= 4; i++) {
printf(" %d",res.output[i]);
}
return 0;
}
答案 0 :(得分:0)
两个问题。
strlen
用于int
数组。memcpy
需要复制的字节数。因此更改
memcpy (result.output, input, sizeof(strlen(input)));
到
memcpy (result.output, input, sizeof(input[0])*(length+1)); //length+1 since your passing array length-1
注意:将数组作为参数传递给函数时,
sizeof(input)
是sizeof(pointer)
。