【问题标题】:Can someone help me figure out why this simple function isn´t working? [duplicate]有人可以帮我弄清楚为什么这个简单的功能不起作用吗? [复制]
【发布时间】:2026-01-10 05:00:01
【问题描述】:

我正在尝试将 argv 命令行中的字符串复制到“op”

这是我一直试图修复但无法修复的 C 语言函数。我知道这是非常基本的东西,但我无法理解:

  int main(int argc, char* argv[])
{
   char op[90];
   strcpy(op,*argv[1]);
   printf("\n %s",op);
   return 0;
}

【问题讨论】:

  • 这可能有助于具体而准确地解释您要做什么。
  • 注意*argv[1]argv[1]的第一个字符。我猜你需要strcpy(op, argv[1]);
  • 编译器可以帮助你。启用警告,阅读他们所说的内容,尝试修复它们。

标签: c project


【解决方案1】:

使用strcpy() 时不需要指定指针符号。变化:

strcpy(op, *argv[1]);

进入:

strcpy(op, argv[1]);

但如果没有传递参数,你仍然会得到segfault。您应该创建一个条件来检查 argc != 1 是否为真,如果为真,则在发生任何异常之前立即停止程序。

【讨论】:

  • 为了安全起见,您将使用 strncpy() 而不是 strcpy()。