zoukankan      html  css  js  c++  java
  • Head First C 第三章总结

    3 Creating small tools 创建小工具

    这一章的内容主要是关于文件的输入与输出的问题.
    也就是说:怎么能够将文件作为程序的输入,以及如何将文件作为程序的输出.

    用一句话总结,就是:
    Make program work with files.

    定义Standard Input & Standard Output

    在程序执行开始后, Standard Input 和 Standard Output 被 O/S 创建.在默认情况下:

    • Standard Input 接受键盘的输入;
    • Standard Output 向显示屏输出.

    当想要用文件作为输入、输出时,可以采用下面的方法.
    ——

    Redirection (在命令行中使用 “>", "<"

    输入格式:./cprogram <gpsdata.csv
    作用: 将 gpsdata.csv 的数据作为名为 cprogram 的程序

    输出格式:./cprogram > gpsdata.csv
    作用: 将 gpsdata.csv 的数据作为名为 cprogram 的程序

    Standard Error 以及 fprintf()

    O/S 的进程不仅仅有 Standard Input 和 Standard Output,还有 Standard Error,可以利用其将错误提示与输出数据分割开来:

    格式:
    程序中: fprintf(stderr, "...");
    命令行中: 2> error.txt (作用是将错误信息输出到 error.txt 文件中,文件名可以自定义)

    fprintf() 是比 printf () 的更通用的函数,
    其比 printf() 多一个参数,即第一项,
    其 value 可以是 stdout(这就相当于 printf())
    也可以是 stderr

    fscanf 是比 scanf() 更通用的函数, fscanf(stdin, "...") 就相当于是 scanf()

    管道连接符Pipe——“|”

    Pipe 是将两个程序的输出和输入连接起来的符号,在命令行中使用.
    其能将第一个程序的输出作为第二个程序的输入.

    格式:
    (./bermuda | ./geo2json) output.json
    作用解释:

    1. 执行./bermuda 和 ./geo2json 两个程序
    2. ./bermuda 的输出是 ./geo2json 的输入
    3. spooky.csv 为第一个程序的输入
    4. output.json 为第二个程序的输出

    注意: () 不能省略

    自定义数据流Your own Data Streams

    需要用到两个函数:fopen() 和 fclose()

    对于需要读(输入)的文件,格式为:
    FILE *in_file = fopen("input.txt", "r");
    (其中, "r" 代表read)

    然后,程序应该用 fscanf 与程序语句配合,在 fscanf() 的第一个参数应该为文件的指针名.
    fscanf(in_file, "...")

    对于需要写(输出)的文件,格式为
    FILE *out_file = fopen("output.txt", "w");
    (其中,“w"代表write)

    然后,应该使用 fprintf() 函数输出,第一个参数为输出的文件的指针名.

    自定义输出输入的文件名

    在一般的程序中,无法自定义输出输入的文件名.
    但是通过下面两种方法,可以自定义输入与输出的文件名.

    1⃣️main() 利用 command-line arguments

    格式:
    int main(int argc, char *argv[])

    main() 函数将 command-line arguments 看作 an array of strings.

    其本身具有一些参数,其代表的意义如下:
    int argc: 是 arg (参数)的数量
    char *argv[] 是 arg (参数)的值

    例如: 
    执行程序 ./categorize 的时候,在命令行中输入:
    ./categorize mermaid mermaid.csv Elvis elvises.csv

    其中, “./categorize”就是 argv[0], mermaid.csv是 argv[2].

    2⃣️getopt() 利用 command-line options

    option 是 形如“-a" 格式的命令
    格式:
    ch = getopt(argc, argv, "d:t")
    然后用 switch 以 ch 为参数执行命令.

    其中第三个参数为可用的 option
    有冒号表示需要添加描述,其值存在 optarg 这个变量中(系统的变量)

  • 相关阅读:
    20155335 俞昆 第十周作业
    课下加分项目 MYPWD 20155335 俞昆
    20155335 俞昆 实时系统 实验三
    20155335俞昆 2017-2018-1 《信息安全系统设计》第9周学习总结
    2017-2018-1 20155335 俞昆 《信息安全系统设计基础》第7周学习总结
    实验二 20155335 实验报告 固件程序设计
    2017-2018-1 20155319 《信息安全系统设计基础》第八周学习总结
    信息安全技术 实验三 数字证书应用
    第二次实验
    2017-2018-1 20155319 《信息安全系统设计基础》第七周学习总结
  • 原文地址:https://www.cnblogs.com/FBsharl/p/12228916.html
Copyright © 2011-2022 走看看