gpt4 book ai didi

c - 从文本文件读取数据到数组并使用c中的共享内存发送它

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

这是我第一次直接寻求帮助。我正在尝试从文本文件读取数据,然后使用共享内存将其发送到其他进程。共享内存按预期工作,问题是数组仅填充前 15 个字符,然后一遍又一遍地发送这 15 个字符,直到到达 EOF。我希望数组用文件中的新字符重新填充自身,只是不知道如何。这是我的代码的一部分。

编辑:我发现由于某种原因(可能是我的错误),填充数组后偏移量没有向前移动,所以我手动设置偏移量来移动。它解决了只读取文件前 15 个字符的问题,但并不理想。读取文件时有时会丢失一些字母,有时单词的顺序会被改变。有人可以向我解释一下为什么会发生这种情况以及我该怎么办吗?

EDIT2:我想我自己解决了这个问题,下面有编辑过的代码,大多数时候看起来都很好。如果有人能想到更好的实现方案,请毫不犹豫地发布。目前,我的解决方案似乎“足够好”

EDIT3:我仍然缺少一些字母,但我增加了共享内存空间,就像你说的,所以现在共享更长的单词实际上不是问题。

int z;
int i;
char text[256];
while(1) {
FILE* fp = fopen("/path/to/my/file", "r");
if (fp) {
fseek(fp, z, SEEK_SET);
while(fscanf(fp,"%s",text)!=EOF) {

s = shm;
for (int i = 0; i < SHM_SIZE; i++) { //this loop loads characters from array to a shared memory
*s++ = text[i];
z++;
}
}
fclose(fp); }
}

最佳答案

您在循环的每次迭代期间重新初始化s = shm;,这意味着您将每一行写入共享内存的开头。如果您想用文件填充所有共享内存,请在循环之前初始化一次。

这是一项学校作业,但在现实世界中,您可能只需对文件使用共享内存映射。

关于c - 从文本文件读取数据到数组并使用c中的共享内存发送它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48155033/

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