java - C 中的命令行参数导致段错误?

标签 java c string segmentation-fault command-line-arguments

我想编写一个简单的程序来将我们传递给它的命令行参数打印回终端

我通常用 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/

相关文章:

javascript - javascript从字符串中提取链接

java - int 变量被连接起来而不是在 System.out.println() 中添加

javascript - 从 JavaScript 中的字符串中去除所有非数字字符

java - 关闭txt文件并将其删除

java - Java中如何重写equals方法

c - C语言函数返回多个值的方法

c - 函数从链表中删除第 n 个位置的节点,给出段错误

java - Java中为什么要用反斜杠来代替特殊字符?

java - 我应该使用什么组件在 Java 中绘制树状图?

C 是否可以使用结构变量进行定义?