• c语言中显示文件自身


    1、

    #include <stdio.h>
    #include <ctype.h>
    
    int main(void)
    {
        int n;
        unsigned long count = 0;  // count初始值为0, 为什么是unsigned long? 
        unsigned char buf[16];  //字符数组为什么是unsigned? 
        FILE *fp;
        char fname[FILENAME_MAX];
        printf("filename: "); scanf("%s", fname);
        
        if((fp = fopen(fname, "rb")) == NULL)
            printf("aFile open failed.
    ");
        else
        {
            while((n = fread(buf, 1, 16, fp)) > 0)  // while语句,fread函数的返回值为循环控制条件,fread函数的返回值为从fp流中读取的字符数,循环次数等于
            //fp流中的总字符数除以每组个数16,如不能整除,则+ 1. 
            {
                int i;
                printf("%081X ", count);  // 使用占位为81的16进制数记录每一次循环 
                
                for(i = 0; i < n; i++)
                    printf("%02X ", (unsigned)buf[i]); // 使用占位为2的16进制数显示每一次循环的每一个字符 
                    
                if(n < 16)     // 当n不够16时, 使用空格填充 
                    for(i = n; i < 16; i++)
                        printf(" ");
                
                for(i = 0; i < n; i++)   // 判断是否为可打印字符,如果是可打印字符,则输出,否则输出. 
                    putchar(isprint(buf[i]) ? buf[i] : '.');
                
                putchar('
    ');
                count += 16;  //十六进制记录循环次数 
            }
            fclose(fp);
        }
        return 0;
    }

  • 相关阅读:
    (五)CSS和JavaScript基础
    (四)标签框架
    (三)表单与servlet的初步结合
    (三)文档结构(上)
    (二十一)持有对象以及泛型基础(1)
    (二十)内部类详解(转)
    (十九)接口类型的简介
    nginx配置文件
    nginx负载均衡
    debian iptables持久化
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/14870011.html
Copyright © 2020-2023  润新知