gpt4 book ai didi

c - C 中使用数组调用函数

转载 作者:行者123 更新时间:2023-11-30 18:29:32 24 4
gpt4 key购买 nike

我有一个函数,它接受数组 1 并将其复制/操作到数组 2。基本上,它的作用是接受数组一中的用户输入,假设 (2, 3, 3) 和数组 2 存储为 (2 , 0, 3, 0, 3)。我知道这是有效的,因为它无需实现功能即可工作,但遗憾的是我必须拥有一个。我一生都无法弄清楚如何调用该函数,我相信我不需要返回,因为它是一个 void 并且不返回值。下面是我的代码,任何帮助将不胜感激。

#include <stdio.h>

void insert0(int n, int a1[], int a2[]);

int main() {

int i = 0;
int n = 0;
int a1[n];
int a2[2*n];

printf("Enter the length of the array: ");
scanf("%d",&n);

printf("Enter the elements of the array: ");

for(i = 0; i < n; i++){ //adds values to first array
scanf("%d",&a1[i]);
}

insert0(); //call function which is wrong and I cannot get anything to work

for( i = 0; i < n*2; i++){ //prints array 2
printf("%d", a2[i]);
}

void insert0 (int n, int a1[], int a2[]){ //inserts 0's between each number

for(i = 0; i < n; i++){
a2[i+i] = a1[i];
a2[i+i+1] = 0;
}
}
}

最佳答案

  • 在声明 a1a2 后修改 n 不会神奇地增加它们的大小。将大小读入 n 后声明 a1a2 以使用可变长度数组。
  • 您必须传递正确的参数才能调用 insert0
  • 在函数内定义函数是 GCC 扩展,除非需要,否则不应这样做。
  • a2 应具有 n*2 - 1 个元素,而不是 n*2 元素。
  • 将其移出 main() 后,i 未在 insert0 中声明,因此您必须声明它。
  • 您应该检查读取是否成功。

更正的代码:

#include <stdio.h>

void insert0(int n, int a1[], int a2[]);

int main() {

int i = 0;
int n = 0;

printf("Enter the length of the array: ");
if(scanf("%d", &n) != 1){
puts("read error for n");
return 1;
}
if(n <= 0){
puts("invalid input");
return 1;
}

int a1[n];
int a2[2*n-1];

printf("Enter the elements of the array: ");

for(i = 0; i < n; i++){ //adds values to first array
if(scanf("%d", &a1[i]) != 1){
printf("read error for a1[%d]\n", i);
return 1;
}
}

insert0(n, a1, a2);

for( i = 0; i < n*2-1; i++){ //prints array 2
printf("%d", a2[i]);
}
}
void insert0 (int n, int a1[], int a2[]){ //inserts 0's between each number
int i;
for(i = 0; i < n; i++){
a2[i+i] = a1[i];
if (i+1 < n){ // don't put 0 after the last element
a2[i+i+1] = 0;
}
}
}

关于c - C 中使用数组调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com