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

49 lines
1.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
编写一个程序使用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;
}