52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
|
// 编写一个程序,使用open系统调用创建一个新文件,并使用write系统调用将用户从控制台输入的内容写入该文件,直到用户输入 "quit"为止。
|
|||
|
#include <stdio.h>
|
|||
|
#include <sys/types.h>
|
|||
|
#include <sys/stat.h>
|
|||
|
#include <unistd.h>
|
|||
|
#include <string.h>
|
|||
|
#include <fcntl.h>
|
|||
|
|
|||
|
int main(int argc, char const *argv[])
|
|||
|
{
|
|||
|
int fd = open("b.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
|
|||
|
if (fd < 0)
|
|||
|
{
|
|||
|
perror("open");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
char buf[1024] = ""; // 初始化缓冲区
|
|||
|
|
|||
|
ssize_t input_len;
|
|||
|
|
|||
|
while (strcmp(buf, "quit\n") != 0) // 检查用户输入是否为"quit\n"
|
|||
|
{
|
|||
|
memset(buf, 0, sizeof(buf)); // 清空缓冲区
|
|||
|
|
|||
|
input_len = read(STDIN_FILENO, buf, sizeof(buf));
|
|||
|
if (input_len < 0)
|
|||
|
{
|
|||
|
perror("read");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
if (strcmp(buf, "quit\n") != 0) // 检查用户输入是否为"quit\n"
|
|||
|
{
|
|||
|
int wrt = write(fd, buf, input_len);
|
|||
|
if (wrt < 0)
|
|||
|
{
|
|||
|
perror("write");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (close(fd) < 0)
|
|||
|
{
|
|||
|
perror("close");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|