我想编写一个简单的程序来将我们传递给它的命令行参数打印回终端
我通常用 Java 编程,这是完全可以接受的
public class cmdargs
{
public static void main(String[] args)
{
if(args.length>0)
System.out.println(args[0]);
}
}//class ends
现在在C
中,我能找到的最接近String
的是char[]
或者更确切地说char name[]
所以当我写
#include<stdio.h>
int main(char args[])
{
printf("%s",args);
return 0;
}
为什么我会遇到段错误?
./cmdargs hi
Segmentation fault (core dumped)
最佳答案
因为这个签名错误
int main(char args[])
在c中,参数的数量作为第一个参数传递,参数作为指针数组传递,所以正确的签名应该是
int main(int argc, char *argv[])
然后您可以访问这些值,例如
int i;
for (i = 0 ; i < argc ; ++i)
printf("%s\n", argv[i]);
请启用编译器警告,以防止此类程序编译。
关于java - C 中的命令行参数导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28009720/