qfedu-linux-advanced-level/day2/homework/h4.c

49 lines
1.4 KiB
C
Raw Normal View History

2023-08-15 23:23:31 +08:00
/*
使open系统调用打开一个已存在的文件使lseek系统调用将文件指针移动到文件末尾使write系统调用将用户从控制台输入的内容追加到文件末尾
man 2 lseek
off_t lseek(int fd, off_t offset, int whence);
whence SEEK_SET SEEK_CUR SEEK_END
*/
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <string.h>
int main(int argc, char const *argv[])
{
int fd = open("a.txt", O_RDWR); // 以读写模式打开文件
if (fd < 0)
{
perror("open"); // 打开文件失败时打印错误信息
return -1;
}
if (argc != 2)
{
perror("usage: ./a something"); // 如果命令行参数不正确,打印使用说明
return -1;
}
const char *input_buf = argv[1]; // 获取用户输入的内容
off_t file_end = lseek(fd, 0, SEEK_END); // 将文件指针移动到文件末尾
char buf[1024] = "";
sprintf(buf, "%s", input_buf); // 将用户输入的内容存储在缓冲区中
int wrt = write(fd, buf, strlen(buf)); // 使用strlen获取写入的字节数
if (wrt < 0)
{
perror("write"); // 写入文件失败时打印错误信息
return -1;
}
if (close(fd) < 0)
{
perror("close"); // 关闭文件失败时打印错误信息
return -1;
}
return 0;
}