【学习笔记】Linux环境 C语言开发基础(2)

本文深入探讨了C语言中main函数的内部工作原理,包括return语句的意义、参数的使用,以及如何通过标准输入流、标准输出流和标准错误流进行数据交互。同时,文章还介绍了重定向和管道的概念及其在Linux环境下的应用。

main函数中的return

编写一个简单的C程序如下:

#include <stdio.h>
int main(int argv,char* argc[])
{
    printf("hello world\n");
    return 0;
}

在一般情况下我们总是习惯写return 0;那么这究竟是代表着什么呢。

如果将return 0; 修改为return 1;那么在编译并运行程序之后使用echo $?命令得到的结果为1。
而如果我的命令是这样的:命令1 && 命令2那么只有在前一个正确执行并且其对应的echo $?为0,下一个命令才会执行。

main函数中的参数

很多时候我们在写主函数时直接写作int main()…
那么完整写法中的参数究竟对应什么含义呢?编写如下程序

#include <stdio.h>

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

编译生成m.out,若我执行该可执行文件的命令为:./m.out -l -a则得到的结果为:
在这里插入图片描述
若命令为./m.out -l -a sda sfdf,则得到的结果为:
在这里插入图片描述
由此,便可清楚地看出参数的含义。

Linux的标准输入流、标准输出流、标准错误流

标准输入流——stdin(键盘);标准输出流——stdout(显示器);标准错误流——stderr
通过如下代码更深刻的体会,可以看出我们习惯用的printf();scanf();其实是封装后的函数

#include <stdio.h>
int main()
{
    //printf("please input the value a:\n");
    fprintf(stdout,"please input the value a:\n");
    int a;
    //scanf("%d",&a);
    fscanf(stdin,"%d",&a);
    if(a<0){
      fprintf(stderr,"the value must > 0");
      return 1;
    }
    return 0;
}

重定向

输出重定向符号 >> 或 > (覆盖原内容)
输入重定向符号 <

管道

符号为“|”,常结合grep(文本搜索命令使用)
例如ls /etc/ | grep ab 即实现了ls /etc/的输出作为grep的输入,并在其中搜索含ab的部分。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值