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;
|
||
}
|