gpt4 book ai didi

c - 从 C 中的 MMAP 中删除空格

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:04 24 4
gpt4 key购买 nike

我正在尝试删除文件中包含的空格,在使用 mmap 读取文件后,我继续使用 for 循环删除空格并将下一个指针指向当前索引,但它似乎没有上类。这是我的代码来说明:

static unsigned long get_size_by_fd(int fd) {
struct stat statbuf;
if(fstat(fd, &statbuf) < 0) exit(-1);
return statbuf.st_size;
}

fd = open("/home/text.txt", O_RDONLY);
file_size = get_size_by_fd(fd);
fb = mmap(0, file_size, PROT_READ || PROT_WRITE, MAP_SHARED, fd, 0);

for (i = 0; i<file_size; i++) {
if (fb[i] == 0x20) {
fb[i] = fb[i++];
}
}

最佳答案

赋值 fb[i] = fb[i++]; 中没有序列点,因此您会得到未指定的结果。最好写清楚:

if (fb[i] == 0x20 && i + 1 < file_size))
{
fb[i] = fb[i + 1];
++i;
}

我还添加了一个额外的边界检查(考虑末尾有空格的情况)。

请注意,您的程序对文件编码进行了假设。

关于c - 从 C 中的 MMAP 中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414718/

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