【问题标题】:Segmentation Fault printf C分段错误 printf C
【发布时间】:2013-10-12 19:12:24
【问题描述】:

下面的代码给我一个分段错误

void parseInput(char usrIn[])
{
char retCmd[MAX_INPUT];
retCmd[0] = usrIn[0];
printf('Debug: %c\n', retCmd[0]);
}

这是我在 C 语言中的第一个大项目,但我认为是 printf 给我带来了错误……但我不确定……

【问题讨论】:

  • MAX_INPUT 的值是多少,调用时传递给函数的是什么?如果您的问题如此含糊,很难为您提供帮助。
  • 对不起,这是#define MAX_INPUT 64
  • 您需要使用字符串文字,而不是字符常量,甚至不确定它是如何编译的。

标签: c segmentation-fault


【解决方案1】:

您的原话:

printf('Debug: %c\n', retCmd[0]);


应该如何:
printf("Debug: %c\n", retCmd[0]);


注意从单引号到双引号的变化

【讨论】:

  • 谢谢,我会在时间用完时做出这个正确答案......我永远不会注意到......即使我应该......
【解决方案2】:

您需要确保数组不是零长度的。如果是,则第一个元素为空,当您尝试访问数组中不存在的元素时,您将收到段错误。您可以使用sizeof(array) / sizeof(array[0]) 或int main(int argc, char** argv) 获取数组长度,并检查 argc 以获取 argv 数组中的元素数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    相关资源
    最近更新 更多