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

标签 c

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

代码如下:

char *filename;
*filename = argv[1];
printf("The filename is: %s", *filename);

我收到有关尝试将参数转换为 int 的指针的错误。这是因为指针实际上是一个整数地址值,而我试图将它设置为一个字符串吗?

编辑:当我更改为“filename = argv[1]”时,我的编译器出现以下错误:赋值从指针目标类型中丢弃限定符。

最佳答案

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

问题出在这里:

*filename = argv[1];

应该是:

filename = argv[1];

为什么?您声明了一个指向 char 的指针,未初始化,没有特别指向任何地方。然后,您取消引用该指针并将数据分配给该内存位置。谁知道呢!

编辑:您还在 printf() 调用中取消引用 filename。删除那个 * :).

此外,当您分配 *filename 时,编译器没有发出警告吗?我的猜测是在没有强制转换的情况下从指针生成整数? 注意警告,它们提供有用的信息!

干杯。

关于c - 从 main() 参数中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559701/

相关文章:

c - 如何遍历二维字符数组

c - 第一次 printf 之后它什么也不做(成功编译)

c++ - C/C++ : Passing a string read to a loop inside a program in C

c - JSON 到 BSON 转换,mongodb c

c++ - 0-1背包可以用一维数组实现吗?

C:将整数值翻转为 bool 值

c - 我想知道这个程序中数组的长度是如何计算的?

循环链表显示 pthread 的奇怪行为

c - mmap()用于远程文件

c - 使用宏扩展从 C 函数返回 double