You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成随机4位代码时,单个元素可打印但数组整体输出为空

C语言随机4位代码数组打印无内容问题解决

编写了一段生成随机4位代码的C语言程序,单个数字能正确打印,但尝试打印整个数组时无内容输出。代码及运行结果如下:

#include <stdio.h>
#include <stdlib.h>

#define CODE_LENGTH 4

void generate_code(int code[])
{
    int i;
    for(i = 0; i < CODE_LENGTH; i++) {
        int x = rand() % 10;
        printf("\n%i", x);
        code[i] = x;
    }
    printf("\nCode: %n", code);
}

int main(void)
{
    int code[4];

    generate_code(code);
    
    return 0;
}

运行输出:

1
7
4
0
Code: 

问题分析

核心错误是误用了%n格式符:%n的作用是将当前已打印的字符总数写入到对应的指针变量中,完全不是用来输出数组内容的。这里传入数组名code(会退化为指针),但%n不会输出任何可见内容,只会修改指针指向的变量,因此Code:后无输出。

修正方案

要打印整个数组,需要遍历数组的每个元素逐个输出。同时补充随机数种子初始化,避免每次运行生成相同的随机序列。修正后的代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 用于初始化随机数种子

#define CODE_LENGTH 4

void generate_code(int code[])
{
    int i;
    // 初始化随机数种子,保证每次运行生成不同的随机序列
    srand((unsigned int)time(NULL));
    for(i = 0; i < CODE_LENGTH; i++) {
        int x = rand() % 10;
        printf("\n%i", x);
        code[i] = x;
    }
    // 遍历数组打印完整代码
    printf("\nCode: ");
    for(i = 0; i < CODE_LENGTH; i++) {
        printf("%i", code[i]);
    }
    printf("\n");
}

int main(void)
{
    int code[CODE_LENGTH];

    generate_code(code);
    
    return 0;
}

内容的提问来源于stack exchange,提问作者Nebelmonster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:12:13