命令行下参数如何接收
- C/C++ code
#include <stdio.h>void main(int argc, char* argv[]){ if(argv[0] != NULL) char i = argv[0]; printf("%s\n", i); printf("\n");}这是我参考一篇博文写的获取命令行参数的程序。在编译时发生了错误:
$ gcc helloworld.c -o helloworld
helloworld.c: In function ‘main’:
helloworld.c:6: error: expected expression before ‘int’
helloworld.c:8: error: ‘i’ undeclared (first use in this function)
helloworld.c:8: error: (Each undeclared identifier is reported only once
helloworld.c:8: error: for each function it appears in.)
谁能帮忙解释一下这些错误的原因。
还有,小弟是直接学的PHP,没有C基础。在php中有isset() 检测变量是否存在, var_dump() 返回变量的字符串描述。那么在C中有类似的函数吗?
[解决办法]
argv是指针数组
[解决办法]
你用的编译器gcc严格执行的是C标准,所以所有的变量在使用之前必须定义。而不允许在使用了定义。即在函数的开始阶段定义整个函数需要用到的变量。
argc表示的是命令行参数的个数,而argv表示每一个命令行参数。每个参数都是一个字符串,而不是单个字符。所以需要用字符数组来表示。其中第一个参数是程序名。
- C/C++ code
#include <stdio.h>#include <string.h>int main(int argc, char* argv[]){ char Ar[100]; if(argv[0] != NULL) strcpy(Ar,argv[0]); printf("%s\n", Ar); printf("\n"); return 0;}
[解决办法]
检测变量是否存在?
不存在不就在编译时发生错误了么,不就知道不存在了么
[解决办法]
第一,main最好要返回int,某些编译器可能不支持void main
第二,char *i的声明不能放在条件语句中