使用C语言简单模拟Linux的cat程序

来源:互联网 发布:淘宝网买家信用 编辑:程序博客网 时间:2024/05/19 00:49

先给出源码

//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 linuxlinuxokok^C[root@bogon mycode]# ./a.out test.txtokthat is finelinux[root@bogon mycode]# ./a.out test.txt fileio.c okthat is finelinux#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.txtError: No such file or directoryokthat is finelinux[root@bogon mycode]#

这个小程序免不了有bug,大神们发现了的话可以留言交流一下,谢谢

原创粉丝点击