⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cat.c

📁 此版本是在网上广为流传的 二级文件系统 基础上制作的.重新编写了块操作等模块,修正了N多BUG. 实现的命令有 ls-列目录 md-创建目录 cd-进入子目录 mf-创建文件 cat-显示文件内
💻 C
字号:
#include <stdio.h>
#include "filesys.h"

 cat (char* file_name)
{
    unsigned int no_file, size;
    unsigned int nblock, nblock_off;
    struct inode *inode;
    unsigned int i, j;
    char ch;
    
    if ( ! (no_file = namei(file_name)) ) {
        printf(">file not exist!\n");
        return;
    }
    
    inode = iget(no_file);
    
    if (inode->di_mode & DIDIR) {
        printf(">can't use this command on dirs\n");
        return;
    }
    nblock = inode->di_size / BLOCKSIZ;
    nblock_off = inode->di_size % BLOCKSIZ;
    
    printf("file contents:\n");
    for (i = 0; i < nblock; ++i) {
        fseek(fd,DATASTART+BLOCKSIZ*inode->di_addr[i],SEEK_SET);
        for (j = 0; j < BLOCKSIZ; ++j) {
            ch = fgetc(fd);
            if ( isgraph(ch) ) printf("%c", ch);
            else
                printf(".");
        }
    }
    
    fseek(fd,DATASTART+BLOCKSIZ*inode->di_addr[i],SEEK_SET);
    for (j = 0; j < nblock_off; ++j) {
        ch = fgetc(fd);
        printf("%c", ch);
    }
    printf("\n");
}            
            
           
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -