从main()参数中提取字符串

Kel*_*elp 5 c

我试图创建一个指向我的程序中的一个main()参数的指针.我设置了初始指针,然后我将它设置为等于数组中的第二个元素,但是当我尝试编译时出现错误,分段错误.这是因为指针指向错误的地址吗?

这是代码:

char *filename;
*filename = argv[1];
printf("The filename is: %s", *filename);
Run Code Online (Sandbox Code Playgroud)

我得到错误的指针试图将参数转换为int.这是因为指针实际上是一个整数地址值,我试图将它设置为等于字符串?

编辑:当我更改为"filename = argv [1]"时,我从编译器中得到以下错误:赋值从指针目标类型中丢弃限定符.

sle*_*ica 7

编译时不可能发生分段错误.除非,编译器违反了内存安全性,这是不太可能的.我会认为它在你运行程序时会发生:D.

问题出在这里:

*filename = argv[1];
Run Code Online (Sandbox Code Playgroud)

它应该是:

filename = argv[1];
Run Code Online (Sandbox Code Playgroud)

为什么?你声明了一个指向char,酉,无处不在的指针.然后,您取消引用该指针并将数据分配到该内存位置.哪个,好吧,谁知道在哪里!

编辑:你还提领filenameprintf()电话.删除*:).

另外,没有'编译器在你指定*filename时发出警告?在没有演员表的情况下从指针制作整数,我猜是什么?注意警告,它们提供有用的信息!

干杯.