消息关闭
    暂无新消息!
因为我要删除文件中的某一行,所以要通过写入一行的\0来实现删除,但是全显示成^@,为什么?

7个回答

︿ 3
那你应该用 空格 而不是 \0

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(void)
{
    int fd;
    char buf[5];
    fd = open("ini", O_RDWR);
    if (fd < 0) {
        perror("open failed");
        exit(EXIT_FAILURE);
    }
    memset(buf, ' ', sizeof(buf));
    write(fd, buf, sizeof(buf));
    close(fd);

    exit(EXIT_SUCCESS);
}
︿ 2
文件是一维的,而不是二维的,所以你说的把某行移到另一行,如果源行的长度大于目的行,就不行了
︿ 0
gedit应该就不显示了,
^@是控制符号的转义,^A对应ASCII码为1的控制字符,依此类推

你用hexdump看一下就明白了