就像我在标题中说的,BUBLS问题上的判断有一些问题,当我在终端上运行代码时,代码运行起来没有问题,但当它go 判断时,它在判断上得到一个额外的灯泡,即使我复制并粘贴输入,在终端上它没有问题,有谁有任何 idea 如何修复它?

#include <cs50.h>
#include <stdio.h>
#include <string.h>

const int BITS_IN_BYTE = 8;

void print_bulb(int bit);

int main(void)
{
    string text = get_string("What is the text?\n");
    int size = strlen(text);
    for (int i = 0; i < size; i++)
    {
        int binary[BITS_IN_BYTE];

        for (int j = 0; j < BITS_IN_BYTE; j++)
        {
            binary[j] = text[i] % 2;
            text[i] /= 2;
        }

        for (int k = BITS_IN_BYTE; k >= 0; k--)
        {
            print_bulb(binary[k]);
        }

        printf("\n");
    }
}

void print_bulb(int bit)
{
    if (bit == 0)
    {
        // Dark emoji
        printf("\U000026AB");
    }
    else if (bit == 1)
    {
        // Light emoji
        printf("\U0001F7E1");
    }
}

我已经try 了以各种方式更改for循环上的信号,并try 对变量进行硬编码,并try 遵循YouTube中的一个教程,但总的来说,在我看来(不是很远),代码中应该没有任何问题,谢谢您抽出时间!

抱歉,有任何英文打字错误之类的,这不是我的第一种语言.

推荐答案

这是for循环

for (int k = BITS_IN_BYTE; k >= 0; k--)
{
    print_bulb(binary[k]);
}

k初始等于BITS_IN_BYTE时,访问数组binary外部的内存.

循环可以被重写,例如

for (int k = BITS_IN_BYTE; k > 0; )
{
    print_bulb(binary[--k]);
}

C++相关问答推荐

C指针地址和转换

为什么下面的C代码会进入无限循环?

exit(EXIT_FAILURE):Tcl C API类似功能

*p[num]和(*p)num的区别

在传统操作系统上可以在虚拟0x0写入吗?

如何在c++中包装返回空*的函数

如何在STM8项目中导入STM8S/A标准外设库(ST VisualDeveloper)?

如何使用libgpio(d)为Raspberry Pi编译C程序?

为什么编译器不能简单地将数据从EDI转移到EAX?

为什么我无法访问C语言中的文件

隐藏测试用例无法在c程序中计算位数.

*S=0;正在优化中.可能是GCC 13号虫?或者是一些不明确的行为?

当我在34mb的.mp4文件中使用FREAD时,我得到了一个分段错误,我如何解决它?

在Ubuntu上使用库部署C程序的最佳实践

变量值不正确的问题

如果类型是新的,offsetof是否与typeof一起工作?

如何修复数组数据与列标题未对齐的问题?

使用邻接表创建图

C 中类型说明符的顺序重要吗?

int 与 size_t 与 long