C语言printf函数打印数组元素无输出且程序卡顿问题求助
问题分析与修复方案
核心错误点
- 变量名不匹配:定义的数组是
cube_pattern,但打印时误用了未声明的cube_state,属于标识符错误。 - 格式符与参数类型不匹配:想要打印单个字符,却使用了字符串格式符
%s。cube_pattern[0]是char类型,%s会从传入的地址开始读取字节直到遇到\0终止符,但你的数组刚好存满54个字符、无终止符,导致程序越界读取内存,找不到终止符时就会卡顿,触发未定义行为。 - 语法错误:
char cube_pattern[54] = SOLVED_CUBE末尾缺少分号,会导致编译失败。 - 非标准main函数:C语言标准中
main函数应返回int类型,而非void。
修复后的代码
#include <stdio.h> #define SOLVED_CUBE "UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB" // 补充分号,数组长度设为55以预留'\0'位置(方便后续打印完整字符串) char cube_pattern[55] = SOLVED_CUBE; void print_pattern() { // 打印单个字符使用%c格式符,修正变量名 printf("%c", cube_pattern[0]); fflush(stdout); // 保留刷新操作,确保输出立即显示 } // 标准main函数格式 int main() { print_pattern(); return 0; }
额外说明
如果需要打印完整的魔方状态字符串,直接使用printf("%s", cube_pattern)即可,此时数组末尾的\0会确保字符串正常终止,不会出现越界问题。
内容的提问来源于stack exchange,提问作者user18288117
相关产品推荐
相关产品推荐

