我正在尝试使用命令运行该程序
./box2 5
/*
* box2.c
*
* Created on: Mar 19, 2014
* Author: Ian
*/
#include <stdio.h>
void printchars(char c, int n);
int main( int argc, char*argv)
{
int n = argv[1];
printchars('*', n);
return 0;
}
void printchars(char c, int n)
{
int x;
for (x = n + 2 ; x > 0; x--)
{
if (x != 1 && x != n)
{
printf("%c", c);
int count = n;
while (count - 2 != 0)
{
printf(" ");
count--;
}
}
else
{
int num = n;
while (num != 0)
{
printf("%c", c);
num--;
}
}
printf("\n");
}
}
每次尝试时,我总是收到错误“段错误(核心已转储)”。
*****
* *
* *
* *
* *
* *
*****
这就是我应该得到的。
我不知道该如何解决这个问题。编译时没有出现任何错误,并且当我尝试运行该程序时,唯一出现的错误是该错误。
最佳答案
argv[1]
是一个char *
。您需要将其转换为 int
。您可以通过调用 atoi()
来做到这一点,如下所示:
int n = atoi(argv[1]);
请注意,这不会处理参数错误。另请注意,您对 argv
的定义是错误的:它应该是 char * argv[]
。
关于c - 段错误(核心转储)C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517616/