gpt4 book ai didi

c - 如何在结构中逐个成员复制

转载 作者:行者123 更新时间:2023-11-30 17:12:56 25 4
gpt4 key购买 nike

我正在尝试编写一个代码,它读取文件,将其内容保存在结构数组中,然后尝试在几毫秒的时间间隔内将这些变量提供给另一个应用程序。我可以从文件中读取数据并将其值存储在“Filedata”结构中。现在我正在尝试将此结构的内容复制到另一个结构中。我为此想到了两种策略。1. 在同一结构中声明另一个变量,然后将一个结构复制到另一个结构中。

struct Filedata {
char *time;
int t_diff;
int SN;
};
struct Filedata Data1[100];
struct Filedata Data2[100];
/* After reading and storing the content of file in Data1 Variable in main function and continuing in main*/
for (k=0; k<100;k++)
{
Data2 = Data1;
printf("\t%d\n", Data2[k].SN);
Sleep(Data2[k+1].t_diff);
}

2.或者制作另一个结构,然后将第一个结构的内容复制到第二个结构中。

struct Target
{
char *time;
int SN;
int t_diff;
};

struct Target Data3[100];

for (k=0; k<100;k++)
{
Data3[k].SN = Data1[i].SN;
Data3[k+1].t_diff = Data1 [i+1].t_diff;
printf("\t%d\n", Data3[k].SN);
Sleep(Data3[k+1].t_diff);
}

我用调试器检查了代码,但它没有将第一个内容复制到另一个中,只是为所有值打印 0。

我在这里读了一些关于复制的文章并使用了复制作业,但不知何故它不起作用

非常感谢您的帮助。

最佳答案

一般来说,要将 src[i] 复制到 dest[i],您可以执行以下操作:

// First, initialize src to some values
src[i].t_diff = 22;
src[i].SN = 33;
src[i].time = malloc(SOMELENGTH);
strcpy(src[i].time, "some text");

// Now, copy src to dest
dest[i].t_diff = src[i].t_diff;
dest[i].SN = src[i].SN;
dest[i].time = malloc(strlen(src[i].time)+1);
strcpy(dest[i].time,src[i].time);

另外,不要忘记在适当的地方提供免费。对于每个 destsrc 对象(您使用的),执行:free(dest[i].time)

在您的第一个片段中,您尝试使用分配复制结构的方式(假设您提供索引)将执行 shallow复制,这可能不是您想要的。

关于c - 如何在结构中逐个成员复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31185657/

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