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

C语言字符串数组无输出问题排查:管理员账号密码代码异常

问题分析与修复方案

你的代码存在多个关键错误,导致编译失败或无预期输出,逐一拆解如下:

  • 函数名大小写不匹配:C语言严格区分大小写,你定义的函数是Listofadmins,但主函数中调用的是listofadmins,编译器会因找不到该函数直接报错,程序根本无法运行。
  • 函数传参类型错误:Listofadmins的第二个参数要求是二维字符数组(char inpstring[][50]),但你调用时传入的str[10]是str数组的第11个一维元素(类型为char[100]),类型不匹配导致函数内部的strcpy操作完全没有修改到主函数的str数组,反而可能触发未定义行为。正确传参应直接传入二维数组名str。
  • for循环初始化冗余:for(j = 0, k, y; ...)中的k, y属于无效的逗号表达式,虽然你在循环外已初始化k=0、y=1,但此处写法不规范且无意义。
  • void main不符合C标准:C语言标准规定main函数的返回类型必须是int,正确写法为int main(void),并在末尾添加return 0;。
  • 函数内部索引硬编码易出错:原函数中直接硬编码inpstring[2]、inpstring[3]等索引,逻辑不够清晰,容易因循环调用导致索引混乱。

修复后的代码

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

void Listofadmins(int index, char inpstring[][100]){
    // 通过index计算起始索引,避免硬编码
    int start_idx = index * 2;
    if(index == 0){
        strcpy(inpstring[start_idx], "Carl01");
        strcpy(inpstring[start_idx + 1], "SVm6u&N591s2");
    } else if(index == 1){
        strcpy(inpstring[start_idx], "Devoth754");
        strcpy(inpstring[start_idx + 1], "eeKS7@8%0@T6");
    } else if(index == 2){
        strcpy(inpstring[start_idx], "David439");
        strcpy(inpstring[start_idx + 1], "l$z7eqV2aD00");
    } else if(index == 3){
        strcpy(inpstring[start_idx], "Matt208");
        strcpy(inpstring[start_idx + 1], "h9Je2#Ri3or$");
    }
}

int main(void)
{
    int j, k = 0, y = 1;
    char str[100][100];
    for(j = 0; j < 4; j++, k += 2, y += 2){
        Listofadmins(j, str);
        printf("账号:%s\n密码:%s\n\n", str[k], str[y]);
    }
    return 0;
}

修复说明

  1. 统一函数名大小写,确保调用与定义一致;
  2. 修正传参为str,让函数能正确操作主函数的二维数组;
  3. 将函数参数的数组维度改为[][100],与主函数的str数组维度匹配,避免潜在的内存访问问题;
  4. 用start_idx = index * 2计算起始索引,让逻辑更清晰,减少硬编码错误;
  5. 规范main函数写法,符合C语言标准;
  6. 优化printf输出格式,让结果可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:50:40