使用C语言简单模拟Linux的cat程序
2017-05-25 10:23
447 查看
先给出源码
下面给演示一下我的运行结果
这个小程序免不了有bug,大神们发现了的话可以留言交流一下,谢谢
//fileio.c #include<stdio.h> #include<stdlib.h> #include<fcntl.h> void print(int fd) { int i,len; char buf[10]; len=read(fd,buf,10);//len是成功读入的字节数,每read一次,文件偏移量就会偏移10个字节位置 while(len>0)//循环打印,直至读到文件尾部了 { for(i=0;i<len;i++) { printf("%c",buf[i]); } len=read(fd,buf,10); } } void prin() { char buf[1024];//我对指针还不熟,不过换成指针应该会好点吧 while(1)//死循环打印字符串 { scanf("%s",buf); puts(buf); } } int main(int argc,char *argv[])//argc参数个数,注意为1时代表没有参数(只有程序名字),argv[]是指参数,argv[1]指第一个参数,argv[2]指第二个参数。。。 { int fd,i; if(argc==1)//没有参数,跳到prin函数, { prin(); return 0; } for(i=1;i<=argc-1;i++)//因为argc为2时才表示有一个参数啊 { fd=open(argv[i],O_RDWR);//以可写可读方式打开 if(fd==-1)//打开失败 { perror("Error");//显示错误信息 } else { print(fd);//打开成功跳转print函数 } close(fd);//记得打开之后关闭文件描述符 } return 0; }
下面给演示一下我的运行结果
[root@bogon mycode]# gcc fileio.c [root@bogon mycode]# ./a.out linux linux ok ok ^C [root@bogon mycode]# ./a.out test.txt ok that is fine linux [root@bogon mycode]# ./a.out test.txt fileio.c ok that is fine linux #include<stdio.h> #include<stdlib.h> #include<fcntl.h> void print(int fd) { int i,len; char buf[10]; len=read(fd,buf,10); while(len>0) { for(i=0;i<len;i++) { printf("%c",buf[i]); } len=read(fd,buf,10); } } void prin() { char buf[1024]; while(1) { scanf("%s",buf); puts(buf); } } int main(int argc,char *argv[]) { int fd,i; if(argc==1) { prin(); return 0; } for(i=1;i<=argc-1;i++) { fd=open(argv[i],O_RDWR); if(fd==-1) { perror("Error"); //continue; } else { print(fd); } close(fd); } return 0; } [root@bogon mycode]# ./a.out nothisfile.txt test.txt Error: No such file or directory ok that is fine linux [root@bogon mycode]#
这个小程序免不了有bug,大神们发现了的话可以留言交流一下,谢谢
相关文章推荐
- 【C语言】没事可以试试这个小程序,使用文件操作,模拟实现一个简单的文件拷贝工具!
- 使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序
- Linux下,使用C/C++一个简单的消息处理程序
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库
- 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库。
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- Eclipse开发调试ARM裸机程序(三)C语言LED_LINUX使用DNW
- Linux下,使用C/C++编写一个简单的消息处理程序
- 【C语言】linux下简单的聊天室程序(TCP+多线程)
- 使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 一个简单的linux下c语言的计时程序(供新手参考)
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- Linux平台下基于C语言使用gSOAP开发Web Service服务端和客户端程序
- 用C语言编写一个Linux下的简单shell程序
- Linux下使用socket传输文件的C语言简单实现