读书人

命令行下参数怎么接收

发布时间: 2012-05-10 16:02:39 作者: rapoo

命令行下参数如何接收

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的声明不能放在条件语句中

读书人网 >C++

热点推荐