c - 由终端参数引起的段错误

标签 c segmentation-fault command-line-arguments

我尝试从终端参数获取可能是文件名的字符串。我想知道为什么会出现段错误。

#include <stdio.h>
#include <string.h>

int main(char *argv[]){

    char somefile[sizeof(argv)];
    strncpy(somefile,argv[0],sizeof(argv));

    printf("The file name is: %s", somefile);

    return 0;
}

最佳答案

要获取 argv 的长度,只需执行 strlen(argv[0]) 即可。

一切都因这个重大问题而变得复杂起来。 strncpy 应该使用字符串的长度,除此之外它似乎应该有效。

关于c - 由终端参数引起的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48914467/

相关文章:

c - 当我创建并向结构添加值时发生了一些事情,导致了段错误

c - 模拟命令行输入

c - 从输入文件中读取数据并放入数组的函数

c - C 编程中的段错误...通过或失败程序最后是通过和失败学生的列表

c - 了解 C 语言中的宏和预处理器指令

c - pthread_create 导致段错误

Haskell:解析命令行参数

python - 指定要使用 argparse 运行的命令

c - 是否有任何工具可以解析 C 文件并在 TreeView 中显示我的代码布局,以便我可以轻松判断函数依赖于哪个 #define 进行编译?

c++ - float 大小的计算成本