gpt4 book ai didi

c - 用 1 个函数填充不同数据类型的数组

转载 作者:行者123 更新时间:2023-12-04 04:59:05 29 4
gpt4 key购买 nike

我必须使用函数填充 2 个 int 和 double 数组。

因此,我创建了 2 个几乎相同的函数,它们仅在数据类型上有所不同。

void fill_double(double* arr,int n)  
{
for(int i=0;i<n;i++)
{
scanf("%lf",&arr[i]);
}
}

void fill_int(int* arr,int n)
{
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
}

问:如何制作 1 个通用函数来填充 int 和 double 数组?

最佳答案

#include <stdio.h>

typedef enum { Integer, Double } type;

void fill(type type, void *array, int size){
int i;
for(i=0;i<size;i++){
if(type == Integer)
scanf("%d", ((int*)array) + i);
else
scanf("%lf", ((double*)array) + i);
}
}
int main(void){
double dd[3];
int id[3];
int i;

fill(Double, dd, 3);
for(i=0;i<3;++i)
printf("%f\n", dd[i]);

fill(Integer, id, 3);
for(i=0;i<3;++i)
printf("%d\n", id[i]);
return 0;
}

宏版本
#include <stdio.h>

enum { _int, _double };
#define type(x) _##x

#define FILL(T, A, S) do{ char *table[] = {"%d", "%lf" };int i; for(i=0;i<S;++i){scanf(table[type(T)], &A[i]);}}while(0)

int main(void){
double dd[3];
int id[3];
int i;

FILL(double, dd, 3);
for(i=0;i<3;++i)
printf("%f\n", dd[i]);

FILL(int, id, 3);
for(i=0;i<3;++i)
printf("%d\n", id[i]);
return 0;
}

关于c - 用 1 个函数填充不同数据类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362593/

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