【发布时间】:2013-09-24 13:28:47
【问题描述】:
它编译得很好,但是当我尝试运行程序时出现分段错误。我不确定我哪里出错了。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char ** argv)
{
int i, childpid;
for (i = strlen(argv[1]); i >= 0; i --) {
if (fork() == 0) {
printf("%c\n",argv[1][i]);
break;
}
}
return 0;
}
【问题讨论】:
-
i让你越界了。试试i = strlen(argv[1]) - 1(请记住,C 中的数组是从零开始的)。 -
你是如何运行它的?如果你不带参数运行它,
argv[1]将是NULL。 -
@MarounMaroun 除了它没有越界 - 该指针指向终止 NUL 字节。
-
检查所需的编号。
argc中的参数。 -
我会尝试 strlen(argv[1]) - 1,我怀疑你是否希望打印 '\0'。
标签: c gcc segmentation-fault