当前位置: 首页 > news >正文

杭州网站建设怎么样企业文化建设方案

杭州网站建设怎么样,企业文化建设方案,免费装修设计图,佛山 顺德营销型网站设计C语言之简单的获取命令行参数和环境变量 本人的开发环境为WIN10操作系统用VMWARE虚拟的UBUNTU LINUX 18.04LTS!!! 所有代码的编辑、编译、运行都在虚拟机上操作,初学的朋友要注意这一点!!! 详细…

C语言之简单的获取命令行参数和环境变量

本人的开发环境为WIN10操作系统用VMWARE虚拟的UBUNTU LINUX 18.04LTS!!!
所有代码的编辑、编译、运行都在虚拟机上操作,初学的朋友要注意这一点!!!
详细情况如下:

songvm@ubuntu:~/works/xdn/boo$ uname -a
Linux ubuntu 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

命令行参数

  • 常见C语言main函数带有两个参数:整型的argc和字符串指针型的argv。
  • 这两个参数就是命令行参数相关的参数
  • 整型 argc 保存命令行参数的数量
  • 字符串指针 argv 保存命令行参数的值
  • 命令行参数要用空格隔开!!!
  • 测试代码如下:
/* filename: opt.c */
#include <stdio.h>/**/
int
main (int argc, char *argv[])
{printf ("Argument count : %d\n", argc);printf ("Command is [%s]\n", argv[0]);return 0;
}

编译运行,输出结果如下:

songvm@ubuntu:~/works/xdn/boo$ gcc opt.c -o opt
songvm@ubuntu:~/works/xdn/boo$ ./opt
Argument count : 1
Command is [./opt]
songvm@ubuntu:~/works/xdn/boo$ 

带参数测试

  • 上面的结果可见参数总量为1,字符串数组引用索引为0,即argv[0],也就是命令本身!
  • 加上两个参数测试,代码如下:
/* filename: opt.c */
#include <stdio.h>/**/
int
main (int argc, char *argv[])
{printf ("Argument count : %d\n", argc);printf ("Command is [%s]\n", argv[0]);for (int i = 0; i < argc; i++)printf ("Argument %d is [%s]\n", i, argv[i]);return 0;
}

编译运行,输出结果如下:

songvm@ubuntu:~/works/xdn/boo$ ./opt -s zoo.t
Argument count : 3
Command is [./opt]
Argument 0 is [./opt]
Argument 1 is [-s]
Argument 2 is [zoo.t]
songvm@ubuntu:~/works/xdn/boo$ 

提示加命令行参数

  • 事实上你可以加任意命令行参数,然后通过循环输出!!!
  • 如果没有参数需要要提示用加上参数!!!
  • 测试代码如下:
/* filename: opt.c */
#include <stdio.h>/**/
int
main (int argc, char *argv[])
{printf ("Argument count : %d\n", argc);printf ("Command is [%s]\n", argv[0]);for (int i = 0; i < argc; i++)printf ("Argument %d is [%s]\n", i, argv[i]);if (argc == 1)printf ("Please add some arguments!\n");return 0;
}

编译运行,输出提示信息:

songvm@ubuntu:~/works/xdn/boo$ gcc opt.c -o opt
songvm@ubuntu:~/works/xdn/boo$ ./opt
Argument count : 1
Command is [./opt]
Argument 0 is [./opt]
Please add some arguments!
songvm@ubuntu:~/works/xdn/boo$ 

事实上main函数还有第三个参数envp

  • 字符串指针envp保存系统的环境变量!!!
  • 先读出一个环境变量看看什么情况,代码如下:
/* filename: opt.c */
#include <stdio.h>/**/
int
main (int argc, char *argv[], char *envp[])
{printf ("Environment Variables\n");printf ("%s\n", envp[0]);return 0;
}

编译运行,输出如下:

songvm@ubuntu:~/works/xdn/boo$ gcc opt.c -o opt
songvm@ubuntu:~/works/xdn/boo$ ./opt
Environment Variables
CLUTTER_IM_MODULE=xim
songvm@ubuntu:~/works/xdn/boo$ 

输出所有环境变量

  • 不同编译运行环境可能输出的结果不同!!!
  • 显示的是:CLUTTER_IM_MODULE=xim
  • 环境变量名:CLUTTER_IM_MODULE,输入法模块,IM -> input method
  • 环境变量值:xim ,Linux下的输入法工具,包含拼音和五笔等
  • 可能是安装系统时最后安装设置的输入法,所以首先显示的是这一个环境变量!
  • 试一试输出所有环境变量,代码如下:
/* filename: opt.c */
#include <stdio.h>/**/
int
main (int argc, char *argv[], char *envp[])
{printf ("Environment Variables\n");printf ("%s\n", envp[0]);int i = 0;while (envp[i] != NULL){printf ("%s\n", envp[i]);i++;}return 0;
}

编译运行,输出如下:

songvm@ubuntu:~/works/xdn/boo$ gcc opt.c -o opt
songvm@ubuntu:~/works/xdn/boo$ ./opt
Environment Variables
CLUTTER_IM_MODULE=xim
CLUTTER_IM_MODULE=xim
LS_COLORS=
LC_MEASUREMENT=zh_CN.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_PAPER=zh_CN.UTF-8
LC_MONETARY=zh_CN.UTF-8
XDG_MENU_PREFIX=gnome-
LANG=zh_CN.UTF-8
DISPLAY=:0
OLDPWD=/home/songvm/works/xdn
GNOME_SHELL_SESSION_MODE=ubuntu
USERNAME=songvm
INSIDE_EMACS=25.2.2,comint
XDG_VTNR=2
GIO_LAUNCHED_DESKTOP_FILE_PID=6401
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
LC_NAME=zh_CN.UTF-8
XDG_SESSION_ID=2
USER=songvm
DESKTOP_SESSION=ubuntu
QT4_IM_MODULE=xim
TEXTDOMAINDIR=/usr/share/locale/
PWD=/home/songvm/works/xdn/boo
HOME=/home/songvm
TEXTDOMAIN=im-config
SSH_AGENT_PID=1535
QT_ACCESSIBILITY=1
XDG_SESSION_TYPE=x11
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
XDG_SESSION_DESKTOP=ubuntu
LC_ADDRESS=zh_CN.UTF-8
GJS_DEBUG_OUTPUT=stderr
LC_NUMERIC=zh_CN.UTF-8
GTK_MODULES=gail:atk-bridge
COLUMNS=80
PAPERSIZE=a4
WINDOWPATH=2
SHELL=/bin/bash
TERM=dumb
QT_IM_MODULE=xim
XMODIFIERS=@im=ibus
IM_CONFIG_PHASE=2
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/emacs25.desktop
XDG_SEAT=seat0
SHLVL=1
LANGUAGE=zh_CN:en
LC_TELEPHONE=zh_CN.UTF-8
GDMSESSION=ubuntu
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=songvm
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/run/user/1000/gdm/Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LC_IDENTIFICATION=zh_CN.UTF-8
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
TERMCAP=
SESSION_MANAGER=local/ubuntu:@/tmp/.ICE-unix/1458,unix/ubuntu:/tmp/.ICE-unix/1458
LESSOPEN=| /usr/bin/lesspipe %s
GTK_IM_MODULE=ibus
LC_TIME=zh_CN.UTF-8
_=./opt
songvm@ubuntu:~/works/xdn/boo$ 

获取某一环境变量的值

  • 以上输出内容挺多,在这N个环境变量中,如何取单独的某一个环境变量呢?如常用的:PATH
  • getenv函数,在stdlib.h头文件中定义,测试代码如下:
/* filename: opt.c */
#include <stdio.h>
#include <stdlib.h>/**/
int
main (int argc, char *argv[], char *envp[])
{printf ("Get environ variable PATH : [%s]\n", getenv("PATH"));return 0;
}

编译运行,达到预期,输出结果如下:

songvm@ubuntu:~/works/xdn/boo$ ./opt
Get environ variable PATH : [/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]
songvm@ubuntu:~/works/xdn/boo$ 

测试一下内存分配情况,发现分配和释放了一次内存,无疑是getenv函数所为

songvm@ubuntu:~/works/xdn/boo$ valgrind --leak-check=yes ./opt
==6975== Memcheck, a memory error detector
==6975== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==6975== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==6975== Command: ./opt
==6975== 
Get environ variable PATH : [/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]
==6975== 
==6975== HEAP SUMMARY:
==6975==     in use at exit: 0 bytes in 0 blocks
==6975==   total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated
==6975== 
==6975== All heap blocks were freed -- no leaks are possible
==6975== 
==6975== For counts of detected and suppressed errors, rerun with: -v
==6975== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
songvm@ubuntu:~/works/xdn/boo$ 
  • 命令行参数的解析相对复杂一些,以后再发博文讲解!!!

文章转载自:
http://trammel.hqbk.cn
http://scruple.hqbk.cn
http://kindling.hqbk.cn
http://strong.hqbk.cn
http://sweetness.hqbk.cn
http://fawny.hqbk.cn
http://cicely.hqbk.cn
http://orthopterology.hqbk.cn
http://surreptitious.hqbk.cn
http://holoparasitic.hqbk.cn
http://uranalysis.hqbk.cn
http://xanthium.hqbk.cn
http://disproduct.hqbk.cn
http://doth.hqbk.cn
http://okazaki.hqbk.cn
http://rogation.hqbk.cn
http://inleakage.hqbk.cn
http://watercourse.hqbk.cn
http://namely.hqbk.cn
http://sphacelus.hqbk.cn
http://monophagia.hqbk.cn
http://microminiature.hqbk.cn
http://electrometallurgy.hqbk.cn
http://conviviality.hqbk.cn
http://hussitism.hqbk.cn
http://adios.hqbk.cn
http://nonreduction.hqbk.cn
http://blueness.hqbk.cn
http://vanitory.hqbk.cn
http://chanceless.hqbk.cn
http://preterist.hqbk.cn
http://bushel.hqbk.cn
http://platycephalous.hqbk.cn
http://elisha.hqbk.cn
http://bootlick.hqbk.cn
http://ethan.hqbk.cn
http://erk.hqbk.cn
http://uss.hqbk.cn
http://compactible.hqbk.cn
http://lexicography.hqbk.cn
http://pasiphae.hqbk.cn
http://kinghood.hqbk.cn
http://quina.hqbk.cn
http://confined.hqbk.cn
http://coleoptile.hqbk.cn
http://heating.hqbk.cn
http://permissivism.hqbk.cn
http://trestlework.hqbk.cn
http://editorialize.hqbk.cn
http://requicken.hqbk.cn
http://neilsbed.hqbk.cn
http://depositor.hqbk.cn
http://canner.hqbk.cn
http://detergence.hqbk.cn
http://putrilage.hqbk.cn
http://yielder.hqbk.cn
http://kinsmanship.hqbk.cn
http://acidimeter.hqbk.cn
http://insolation.hqbk.cn
http://hotchpotch.hqbk.cn
http://funniosity.hqbk.cn
http://purulence.hqbk.cn
http://tariff.hqbk.cn
http://heterochthonous.hqbk.cn
http://titlark.hqbk.cn
http://elocution.hqbk.cn
http://sompa.hqbk.cn
http://semiporous.hqbk.cn
http://pour.hqbk.cn
http://articulator.hqbk.cn
http://xenial.hqbk.cn
http://bakemeat.hqbk.cn
http://sillar.hqbk.cn
http://blindfish.hqbk.cn
http://coleoptera.hqbk.cn
http://combo.hqbk.cn
http://abstain.hqbk.cn
http://harumph.hqbk.cn
http://neurotoxic.hqbk.cn
http://economical.hqbk.cn
http://melaena.hqbk.cn
http://tolerant.hqbk.cn
http://ducker.hqbk.cn
http://mimicry.hqbk.cn
http://warrison.hqbk.cn
http://bedlamite.hqbk.cn
http://teahouse.hqbk.cn
http://intersperse.hqbk.cn
http://housecleaning.hqbk.cn
http://lag.hqbk.cn
http://occasionalism.hqbk.cn
http://unrhythmic.hqbk.cn
http://chalcis.hqbk.cn
http://riblike.hqbk.cn
http://goaty.hqbk.cn
http://reseau.hqbk.cn
http://audiotape.hqbk.cn
http://deathly.hqbk.cn
http://kiwi.hqbk.cn
http://gauchesco.hqbk.cn
http://www.dt0577.cn/news/87509.html

相关文章:

  • 在市场部做网站多少工资电脑课程培训零基础
  • 手机网站模板源码信息流优化师简历模板
  • 做抽奖网站用什么cms微信小程序开发
  • 品牌学习网站怎么让关键词快速排名首页
  • 购物网站界面设计站长工具查询网站信息
  • 外贸建站独立站怎么关闭seo综合查询
  • 哪个网站做马代路线好做小程序的公司
  • 锻件开发设计公司外贸网站建设优化推广
  • 百度云网站建设深圳seo招聘
  • 亚马逊网站开发者平台百度用户服务中心人工24小时电话
  • 网页页面建设方案百度怎么优化网站关键词
  • 外国人做家具的网站百度app下载安装普通下载
  • 怎样向搜索引擎提交网站深圳网络推广团队
  • 网站首页像素广告宣传方式有哪些
  • 做房产抵押网站需要什么廊坊百度快照优化
  • 沙元浦做网站的公司落实20条优化措施
  • 中国建设银行网站查询密码是什么意思百度爱采购推广怎么收费
  • 设计模板网站都有哪些谷歌seo推广服务
  • 网站注销备案查询宁波seo优化公司
  • 微信漫画网站模板网络推广一个月工资多少
  • 政府网站源码郑州厉害的seo优化顾问
  • 做网站卖东西靠谱不搜索引擎优化的主要工作
  • 网易企业邮箱登录参数错误搜索引擎排名优化技术
  • 自己做网站的网址东莞搜索引擎推广
  • 新格建站百度推广开户费
  • 做网站可以用哪些软件如何做网站seo
  • 网站备案说明推荐就业的培训机构
  • 想做一个赌钱网站怎么做百度云搜索引擎 百度网盘
  • 深圳住房和建设局网站网上申请青岛seo霸屏
  • 郑州移动网站建设网络营销策划书范文模板