c - 段错误(核心转储)C 程序

标签 c segmentation-fault

我正在尝试使用命令运行该程序

./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/

相关文章:

c - 多线程生产者消费者 C 程序的段错误

c++ - 段错误(C++)

c - 使用 fgets() 将文件中的行读取到结构数组中导致的段错误

c - C 中 strtok 的段错误

c++ - Bad_alloc 没有在我期望的时候抛出

c - 寻找完美的 Makefile Canvas

c - linux中函数基名的隐式声明

c - Cygwin 中的段错误和默认变量初始化

c - C函数在char [] segfaults中交换两个char,尽管不使用字符串文字

c - DragonFireSDK 中的表格 View