C语言--在命令行输入文件名字并打印文件内容

C语言编程中,经常遇到main函数中argc和argv[]这两个参数。argc是argument count的缩写,即参数的个数;argv是argument vector的缩写,即参数列表。argv[0]是程序本身的名字,argv[1]是在命令行中输入的第一个程序的参数,argv[argc]是NULL,如下所示:

#include "stdio.h"

int main (int argc, char *argv[])
{
    printf ("the argc value is %d \n", argc);

    int i;
    for (i = 0; i <= argc; i++){
        printf ("the argv[%d] value is %s \n", i, argv[i]);
    }

    return 0;
}

#将上述代码编译为test可执行文件,在命令行输入如下内容
/*
./test arg_1 arg_2
*/

#执行结果如下:
/*
the argc value is 3
the argv[0] value is ./test_c_0
the argv[1] value is arg_1
the argv[2] value is arg_2
the argv[3] value is (null)
*/

搞清楚了argc和argv[],我们就可以使用两者通过命令行向程序传送将要处理的文件名参数,代码如下。

#include "stdio.h"

int main (int argc, char *argv[])
{
    FILE *fp;
    int c;

    fp = fopen( argv[1], "r");

    while ( (c = fgetc(fp)) != EOF){
        printf ("%c", c);
    }

    fclose(fp);

    return 0;
}
时间: 2024-10-11 06:57:49

C语言--在命令行输入文件名字并打印文件内容的相关文章

Linux (rz、sz命令行)与本地电脑 命令行上传、下载文件

Linux 与本地电脑直接交互, 命令行上传.下载文件. 一.lrzsz命令行安装: 1.rpm安装:(链接: http://pan.baidu.com/s/1cBuTm2 密码: vijf) rpm -ivh lrzsz-0.12.20-22.1.x86_64.rpm 2.yum 安装: yum install lrzsz 二.命令使用: 1.发送到本地: sz 文件名 2.上传到服务器: rz -be 在弹出的框中选择文件,上传文件的用户和组是当前登录的用户

Linux命令行下svn ignore忽略文件或文件夹用法

Linux命令行下svn ignore忽略文件或文件夹用法 一.忽略单个目录 1.忽略文件夹 假如目录oa.youxi.com是从svn checkout出来的,在服务器本地目录添加了material,但是不希望把material加入版本控制,因此我们需要忽略掉这个目录首先使用svn status命令查看当前状态[[email protected] oa.youxi.com]# svn status? htdocs/admin/adv/material 添加需要忽略的目录,貌似必须得进入该目录之

MAC - 命令行中用sublime打开指定文件,使用ln命令建立软链接

目前sublime是mac下最好的文本编辑软件,经常要使用它打开一些文件,例如html,js,txt,json等文件,但是sublime2默认不支持在命令行下调用,经过研究发现可以用建立软连接的方式调用,同样原因应该可以用到mac下其它不支持命令行的软件 系统版本:10.9.4 可以使用 open -a /Applications/Sublime\ Text\ 2.app composer.json 但是每次这样输太麻烦,可以用建立软连接的方式调用 ln -s /Applications/Sub

在命令行中加参数的文件复制程序

这篇博文介绍使用命令行参数的编程方法,载体是用于文件复制的程序.这也是我用Markdown编辑器写的第一篇博文.Markdown在写<逆袭大学>时用过,写博文是第一次. 本文正文: 引子 下面的程序,可以完成由a.txt到b.txt的复制. #include <iostream> #include <fstream> using namespace std; int main( ) { char ch; ifstream infile("a.txt"

如何使用命令行编译和运行java文件

相信大家现在一般都在使用IDE环境来开发运行java文件,但我觉得可以在命令行里面简单运行java文件,技多不压身. 接下来我来说一下编译和运行java文件: 第一步,首先下一个入门程序(注意:一定要将程序里面的类名跟保存的文件名称写成一样) 第二步,进入到java文件保存的目录(注意:必须要进入到保存的目录,否则运行会出错) 第四步使用javac HelloWorld.java编译源程序会生成一个.class的中间代码 第五步使用java HelloWorld运行程序(注意java后面的程序结

C语言处理命令行输入

在C语言中,我们经常碰到想要处理命令行的情况.当往往由于C语言字符串比较难处理,最终出现各种奇怪的错误.现已算法指令为例,说明C语言命令行处理的框架.算法指令如下图所示: 算法 指令 加法 ADD op1 op2 减法 SUB op1 op2 乘法 MUL op1 op2 除法 DIV op1 op2 预期效果: 程序等待用户输入用户指令,当程序键入算法指令后,输出正确的结果:如果出现非法操作,则输出响应的出错信息. 在main函数中,处理程序的代码框架,do_line处理由命令行获取的一行数据

go语言 从命令行获取参数解析

go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单. os.Args 如果你只是简单的想要获取命令行参数,可以像下面的示例代码一样使用os.Args来获取命令行参数 package main import "fmt" import "os" func main(){ if len(os.Args)>0 { for index , value := range os.Args { fmt.Println(index, value

c语言中命令行参数argc,argv[ ]

main(int argc,char *argv[ ]) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] main()括号内是固定的写法. 下面给出一个例子来理解这两个参数的用法: 假设程序的名称为prog, 当只输入prog,则由操作系统传来的参数为: argc=1,表示只有一程序名称. argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog 当输入prog para_1,有一个参数,则由操

R语言使用命令行参数

args_test.R 代码如下: Args <- commandArgs()cat("Args[1]=",Args[1],"\n")cat("Args[2]=",Args[1],"\n")cat("Args[3]=",Args[3],"\n")cat("Args[4]=",Args[4],"\n")cat("Args[5]=&qu