我正在尝试使用命令
运行此程序./ 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");
}
}
每次尝试时,我总是会收到错误Segmentation Fault(core dumped)。
*****
* *
* *
* *
* *
* *
*****
这就是我应该得到的。
我不知道如何解决这个问题。编译时没有错误,当我尝试运行程序时,错误是唯一出现的错误。
答案 0 :(得分:2)
argv[1]
是char *
。您需要将其转换为int
。您可以通过调用atoi()
执行此操作,如下所示:
int n = atoi(argv[1]);
请注意,这不会处理参数错误。另请注意,您对argv
的定义是错误的:它应该是char * argv[]
。
答案 1 :(得分:0)
将int main( int argc, char*argv)
更改为int main( int argc, char**argv)
。
答案 2 :(得分:0)
这是错误的:
int main( int argc, char*argv)
因为argv
必须声明为ptr-to-ptr-to-char。同样,这:
int n = argv[1];
无法正常工作。你需要像
这样的东西 int main(int argc, char **argv)
...
int n = atoi(argv[1]);