gpt4 book ai didi

c - O_APPEND 的使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:39 27 4
gpt4 key购买 nike

运行此代码时出现错误的文件描述符错误

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

void main() {
int fd;
char buff[50];
char wrt[4]="Fine";
fd = open("temp.txt",O_APPEND);
if (fd == -1) {
perror("agia error");
} else {
int cw = write(fd, wrt,4);
if (cw == -1) {
perror("Errori");
}
close(fd);
}
}

最佳答案

虽然给出了答案,甚至有人指出缺少必要的 header (不是全部),但不能保持原样。

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

open(2) 缺少 header 。

void main() { 

这应该是 int main(void)。

  int fd;
char buff[50];

未使用的变量。

  char wrt[4]="Fine";

不正确。 “Fine”的长度为 4 个字符,这意味着要正确终止 nul,这需要 5 个字符的缓冲区。幸运的是,您不需要将大小指定为 char wrt[] = "Fine";会为你做的。除了这里可能不想要这样的缓冲区但想要 char *wrt = "Fine";相反。

  fd = open("temp.txt",O_APPEND);

已经提到了错误的标志用法。

  if (fd == -1) {
perror("agia error");

返回一个错误,而不只是打印出发生了什么。

  } else { 
int cw = write(fd, wrt,4);

容易出错的数字 4 重复。如果你有一个缓冲区(并且可能减去 1)或 strlen,它应该使用 sizeof。

    if (cw == -1) {
perror("Errori");
}
close(fd);
}
}

关于c - O_APPEND 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584104/

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