gpt4 book ai didi

c - 使用系统调用读取/写入

转载 作者:太空狗 更新时间:2023-10-29 15:55:13 26 4
gpt4 key购买 nike

我正在尝试编写代码(在 C 中),该代码将从一个文件读取,然后写入一个创建的文件。我唯一挣扎的部分是 while 循环,它应该连续读写直到文件结束。我得到前 120 个字符,写入它们,然后将“XYZ”写入文件,但是当我再次尝试读/写时,我得到 ^@ 和一堆垃圾。我不需要关于如何执行此操作的解决方案,只需告诉我我做错了什么/忘了做什么。

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

void main()
{
int a, b, c;
int XYZ = creat("XYZ.doc", 777);
if(XYZ<0) {
printf("error with creat");
exit(0);
}
int xxxx = open("/usr/class/cis660/xx.xx", 0);
if(xxxx<0) {
printf("error with open");
exit(0);
}
int tryread = 1;
int trywrite;
while (tryread > 0) {
char buffer[120];
tryread = read(xxxx, &buffer, 120);
trywrite = write(XYZ, &buffer, 120);
char xyz[3] = "XYZ";
trywrite = write(XYZ, &xyz, 120);
}
}

最佳答案

char xyz[3] = "XYZ";
trywrite = write(XYZ, &xyz, 120);

这是您的主要问题。当你只有 3 个时,你正在尝试写 120。你还有其他问题:

  • 您没有检查readwrite 返回的内容
  • readwrite 不返回 int,但返回 ssize_t
  • open(path, 0) 有效,但您应该使用 O_RDONLY
  • 您正在使用 void main 而不是正确的 int main
  • 正如 Jonathan Leffler 指出的那样,您应该使用 buffer 而不是 &buffer

关于c - 使用系统调用读取/写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622732/

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