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

使用char字符串与for循环输出星期几却得到(null)输出的问题

问题分析与修正方案

代码中的核心错误:

  • 数组类型定义错误:char string[7]是仅能存储7个单个字符的数组,无法容纳多个字符串。要存储一周七天的字符串,需定义字符指针数组char *string[7],或二维字符数组char string[7][20](20为足够容纳最长星期名称的长度)。
  • 赋值类型不匹配:"Monday"这类字符串字面量属于const char*类型指针,直接赋值给char类型的数组元素会导致指针地址被截断为单个字符,完全不符合存储字符串的需求。
  • 循环越界访问:数组下标范围是0到6(共7个元素),但循环条件i <=7会访问不存在的string[7],触发数组越界的未定义行为。

修正后的代码方案

方案一:使用字符指针数组

#include <stdio.h>

int main()
{
    int i;
    char *string[7];

    string[0] = "Monday";
    string[1] = "Tuesday";
    string[2] = "Wednesday";
    string[3] = "Thursday";
    string[4] = "Friday";
    string[5] = "Saturday";
    string[6] = "Sunday";

    for (i = 0; i < 7; i++)
    {
        printf("%s\n", string[i]);
    }
    return 0;
}

方案二:使用二维字符数组

#include <stdio.h>

int main()
{
    int i;
    char string[7][20] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

    for (i = 0; i < 7; i++)
    {
        printf("%s\n", string[i]);
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:15:39