#include <stdio.h> #include <windows.h> #include <conio.h>

void SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes); HANDLE GetStdHandle(DWORD nStdHandle);

int main() { int i = 0; while (1) { system('cls'); for (int j = 0; j < i; j++) { printf(' '); } printf('孔晴绝世大美女\n'); i++;

    if (i > 50)
    {
        i = 0;
    }

    if (i % 3 == 0)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
    }
    else if (i % 3 == 1)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_RED);
    }
    else
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
    }

    Sleep(100);
    if (_kbhit()) //判断是否有按键输入
    {
        break;
    }
}

return 0;

}

该代码存在以下语法错误:

  1. 未声明标识符SetConsoleTextAttributeGetStdHandle 函数在使用前没有声明,导致编译器无法识别。

  2. 缺少头文件:缺少 conio.h 头文件,导致 FOREGROUND_GREEN 等标识符无法识别。

  3. 缺少中断条件while 循环缺少中断条件,导致程序会一直循环输出文字。

修正后的代码已经解决了以上错误。首先,在代码开头添加了 conio.h 头文件,并声明了 SetConsoleTextAttributeGetStdHandle 函数。其次,在 while 循环中添加了 _kbhit() 函数,判断是否有按键输入,如果有则使用 break 语句退出循环。

修正后的代码如下:

#include <stdio.h>
#include <windows.h>
#include <conio.h>

void SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
HANDLE GetStdHandle(DWORD nStdHandle);

int main()
{
    int i = 0;
    while (1)
    {
        system('cls');
        for (int j = 0; j < i; j++)
        {
            printf(' ');
        }
        printf('孔晴绝世大美女\n');
        i++;

        if (i > 50)
        {
            i = 0;
        }

        if (i % 3 == 0)
        {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
        }
        else if (i % 3 == 1)
        {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_RED);
        }
        else
        {
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
        }

        Sleep(100);
        if (_kbhit()) //判断是否有按键输入
        {
            break;
        }
    }

    return 0;
}

代码功能:

  1. 文字滚动: 代码使用 system('cls') 清空屏幕,并在每次循环中输出空格和文字,实现文字滚动效果。

  2. 颜色变化: 代码根据空格数判断当前文字颜色,并在循环中动态改变文字颜色。

  3. 按键中断: 代码使用 _kbhit() 函数判断是否有按键输入,如果有则使用 break 语句退出循环,方便用户控制程序运行。

总结:

本篇文章分析了C语言代码中常见的语法错误,并提供了修正后的代码,帮助读者理解代码错误的原因,并学会如何进行代码调试和修正。同时,该代码还实现了文字滚动和颜色变化的功能,为读者提供了一个学习C语言编程的示例。

C语言代码错误分析及修正:实现文字滚动和颜色变化

原文地址: https://www.cveoy.top/t/topic/mhsu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录