1111
Posted hazelnut
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1111相关的知识,希望对你有一定的参考价值。
#include<stdio.h> //标准输入输出函数
#include<stdlib.h> //C、C++语言的最常用的系统函数
#include<sys/types.h>
#include<sys/stat.h>
#include<syslog.h>
#include<string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define MAX 10
int chmd()
{
int c;
printf("Please input your choice of change the mode of the file :");
scanf("%d", &c);
switch(c)
{
case 0:chmod("file1", S_IRWXU); break;
// Mode flag: Read, write, execute by user.
//依据自己的理解定义其他case中文件权限的情况。
case 1:
chmod("file1", S_IRUSR); break;
case 2:
chmod("file1", S_IWUSR); break;
case 3:
chmod("file1", S_IXUSR); break;
default:printf("You have a wrong choice!
");
}
return 0;
}
int main()
{
int fd;
int num;
int choice;
char buffer[MAX];
struct stat st;
char* path="/bin/ls";
char* argv[4]={"ls","-l","file1",NULL};
while(1)
{
printf("*************************
");
printf("0. 退出
");
printf("1. 创建新文件
");
printf("2. 写文件
");
printf("3. 读文件
");
printf("4. 修改文件权限
");
printf("5. 查看当前文件的权限并退出
");
printf("*************************
");
printf("Please input your choice(0-6):");
scanf("%d", &choice);
switch(choice)
{
case 0:close(fd);
exit(0);
case 1:
fd=open("file1",O_RDWR|O_TRUNC|O_CREAT,0750);
num = 0;
/*
O_RDWR : file open mode: Read/Write
O_TRUNC : file open mode: Truncate file to length 0
O_CREAT : file open mode: Create if file does not yet exist.
0750: file access permission bits -rwxr-x---当前用户rwx;同组用户r-x; 其他用户无权限
*/
if(fd==-1)
printf("File Create Failed!
");
else {
printf("fd=%d
",fd);
close(fd);
}
break;
case 2:
fd = open("file1", O_WRONLY|O_APPEND);
scanf("%s", buffer);
int len = (int)strlen(buffer);
if(len + num < MAX)
num += write(fd, buffer, len);
else printf("Write failed!
");
close(fd);
break;
//补充代码:从键盘里面读取信息,写到file1里面
case 3:
fd = open("file1", O_RDONLY);
memset(buffer, ‘ ‘, sizeof buffer);
if(read(fd, buffer, MAX) >= 0)
printf("%s
", buffer);
else printf("Read failed!
");
close(fd);
break;
//补充代码:把file1文件的内容在屏幕上输出
case 4:
chmd();
printf("Change mode success!
");
break;
case 5:
execv(path, argv); //-ls -l 显示文件完整的信息,包括权限,拥有者,拥有组,文件名,大小等
break;
default:
printf("You have a wrong choice!
");
}
}
}
以上是关于1111的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #723 (Div. 2)- I Hate 1111 - 数学
这是 Zeller 程序的代码。除了 1111 年 2 月 31 日、1111 年 6 月 31 日这通常应该是错误的日期之外,一切都运行良好。 [关闭]