【问题标题】:printf not printingprintf 不打印
【发布时间】:2015-10-15 17:00:02
【问题描述】:

我有一些代码用于“nim”游戏的浅版本,以便了解 c。这部分是关于打印棋盘游戏,预期输出:

---------------
Box 1: ooo
Box 2: oooo
---------------

每个框中'o'的数量由用户输入并作为参数发送给函数。

代码:

#include <stdio.h>
#define NUMBER_OF_BOXES 2
void printBoard(int number_of_balls_1, int number_of_balls_2)
{
   int boxes[NUMBER_OF_BOXES] = {number_of_balls_1, number_of_balls_2};
   printf("---------------\n");
   printBoxes(boxes);
   printf("---------------\n");
}

void printBoxes(int boxes[NUMBER_OF_BOXES])
{
    char ball = 'o';
    for(int i = 0; i < NUMBER_OF_BOXES; i++)
    {
        printf("Box %d: ", i+1);
        for(int j = 0; j < boxes[i]; ++j)
        {
            printf("%c", ball);
        }
        printf("\n");
    }
}

它曾经工作过(三个小时前很累),我不知道出了什么问题!现在它给我的只是:

"---------------
Box 0: Box 1: ---------------"

我们将不胜感激!

【问题讨论】:

  • 你的main函数在哪里?
  • 出于某种原因,您在 boxes[] 中使用基于 1 的索引,而不是正常的基于 0 的索引?
  • 无法使用此代码获得输出Box 0。请仔细检查并发布与输出 "--------------- Box 0: Box 1: ---------------" 一致的代码(反之亦然)
  • 那将无法编译。 NUMBER_OF_BOXES 什么都不是。注意:使用一致的缩进(并且不要使用 GNU 样式 - 它只是丑陋)。您还通过for 循环i &lt;= ... 调用_undefined 行为。

标签: c char printf


【解决方案1】:
#include <stdio.h>
#define NUMBER_OF_BOXES 2

void printBoxes(const int boxes[NUMBER_OF_BOXES]) {
    char ball = 'o';
    for(int i = 0; i < NUMBER_OF_BOXES; i++) {
        printf("Box %d: ", i+1);
        for(int j = 0; j < boxes[i]; ++j) {
            printf("%c", ball);
        }
        printf("\n");
    }
}

void printBoard(const int number_of_balls_1, const int number_of_balls_2) {
        int boxes[NUMBER_OF_BOXES]= {number_of_balls_1, number_of_balls_2};
        printf("---------------\n");
        printBoxes(boxes);
        printf("---------------\n");
    }

void main() {
    printBoard(3, 4);
}

编译:

gcc -std=c99 box.c -o box

输出:

---------------
Box 1: ooo
Box 2: oooo
---------------

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    
    #define NUMBER_OF_BOXES 2
    
    void printBoxes(const int boxes[NUMBER_OF_BOXES])
    {
        char ball = 'o';
        for(int i = 1; i <= NUMBER_OF_BOXES; i++)
        {
            printf("Box %d: ", i);
            for(int j = 0; j < boxes[i-1]; ++j)
            {
                printf("%c", ball);
            }
            printf("\n");
        }
    }
    
    void printBoard(const int number_of_balls_1, const int number_of_balls_2)
    {
        int boxes[NUMBER_OF_BOXES]= {number_of_balls_1, number_of_balls_2};
        printf("---------------\n");
        printBoxes(boxes);
        printf("---------------\n");
    }
    

    【讨论】:

    • 谢谢!我确实错过了那里的那个索引。这会给你预期的输出吗?因为它不适合我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多