gpt4 book ai didi

c - 搞笑写SysCall错误: Prints chinese characters in . txt

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

在我的虚拟盒子 Ubuntu 镜像下,我正在尝试用 C 语言编写 open 和 write 系统调用,结果遇到了我遇到过的最有趣的错误!

基本上,我从打开中获取一个文件描述符,并将来自写入函数的输入写入 .txt 文件。用户告诉打开函数在哪里寻找文件/在哪里创建文件。

  • 如果文件还没有创建,open 会为我创建
  • 如果已经存在,我会将输入附加到文件末尾

    int main(int argc, char* argv[]{
    int fd;
    int bytesWritten;

    //open and create file if it's not been created yet
    fd = open(argv[1], O_CREAT|O_WRONLY|O_APPEND , S_IRWXU);
    if(fd == -1){
    perror("Open error:\n");
    exit(EXIT_FAILURE);
    }

    bytesWritten = write(fd,"Hello mate!\n",20);
    if(bytesWritten == -1){
    perror("Write error:\n");
    exit(EXIT_FAILURE);
    }
    //fysnc
    return 0;}

如果我将输出打印到 stdout (1)(将 fd 更改为 1),我将得到预期的结果:

Hello mate!

但是,如果我像上面那样使用 write,事情就会变得很奇怪(而且很有趣) Error

这让我笑了,文件被创建了,如果我执行程序几次,文件就会开始越来越大。

顺便说一句,我这样执行程序:

./copy /home/b/Desktop/Examples/U3/test.txt

我不得不承认这是一个非常有趣的副作用,但为什么会发生这种情况,我该如何解决呢?

只是好奇

最佳答案

好的你们,我刚刚找到了解决这个问题的方法,我不得不为浪费你们的时间而道歉......

我的合作伙伴重命名了文件所在的文件夹(例如从 Ü3 到 U3)并按 Enter。这种破坏文件编码...

在另一个新文件夹中创建源文件可以解决问题..

关于c - 搞笑写SysCall错误: Prints chinese characters in . txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40339840/

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