CYT3536167715 2024-10-23 00:11 采纳率: 33.3%
浏览 4
已结题

求解,想解决一下多维数组的运用过程中遇到的问题

要求输入如样式(company1,1),输出(game1),不知道问题出在哪,谁帮忙看看,万分感谢(^🙏^)
#include <stdio.h>
#include <string.h>

int main() {
char company_name[4] = {"KUR0", "Tencent", "MiHoYo", "NetEase"};
char game_name[4][4][10] = {
{"zspsE", "Mc", "error", "error"},
{"WZRY", "NARUTO", "HPJY", "error"},
{"BH3", "XQTD", "Genshin", "ZZZ"},
{"D5RG", "YYS", "PAJ", "error"}
};
int i = 0;
int j = 0;
char Company_name[50];

for (i = 0; i < 4; i++) 
{
    scanf("%s%d", &Company_name, &j);
    if (strcmp(Company_name, company_name[i]) == 0) 
    {
        for (j = 0; j < 4; j++) 
        {
            printf("%s ", game_name[i][j]);
        }
        break;
    }
}
return 0;

}

  • 写回答

1条回答 默认 最新

  • 无疆76 2024-10-23 00:12
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的代码来看,我发现了一个主要的问题,以及几个小的细节需要注意。

    首先,主要问题是你没有为输入的数据(Company_name和对应的数字j)分配足够的存储空间,这可能是你无法成功获取输入的主要原因。具体来说,scanf("%s%d", &Company_name, &j)这部分代码中,你没有正确分配内存给字符串Company_name,你应该分配足够的空间来存储输入的公司名称。同样地,你也没有初始化字符串数组company_name的大小和内存空间。你的字符串数组的大小只设置为4个字符的空间,对于公司名字可能不足够大。假设你输入的字符数不确定的话,使用动态内存分配是更好的选择。对于公司名和数字变量j的读取问题,我会在下面详细说明。下面是修正后的代码:

    以下是修正后的代码示例:

    #include <stdio.h>
    #include <stdlib.h> // 添加标准库用于动态内存分配
    #include <string.h> // 包含字符串处理的函数
    
    int main() {
        // 动态分配公司名称的空间(此处假设公司名称最多为10个字符加上一个结束符'\0')
        char company_name[4][11]; // 修改为二维数组存储公司名称,每个名称预留足够的空间(包括'\0')
        char game_name[4][4][10]; // 游戏名称数组保持不变
        int i = 0; // 循环变量保持不变
        int j = 0; // 循环变量保持不变,用于遍历游戏名称数组索引
        char tempCompany_name[11]; // 用于临时存储输入的单个公司名称的字符串变量(假设最多为十个字符)
        int tempIndex; // 用于存储用户输入的数字索引值,而非直接与j比较使用。这里假定是输入的合法索引值,没有进行有效性检查。使用时请注意。对于较大的数据量使用链表或者其他数据结构会更加合理和高效。在这种情况下考虑处理无效输入和其他异常情况将会非常重要。当然这里没有详尽的示例实现这些情况。这只是一个基本的修正示例。你需要根据实际情况进一步处理这些特殊情况。关于动态内存分配的使用和错误处理可能需要额外的代码来处理异常情况和错误检查。具体的代码细节需要根据具体需求和环境来决定如何写得更加健壮和灵活。总之在解决这个问题后,你应该可以正常运行这个程序以查询指定的游戏名称列表了。如果你在更具体的环境下遇到了其他关于输入处理和调试相关的问题(如读写边界处理错误处理优化代码等),请提供更多细节以便我可以给出更具体的帮助和解决方案。同时也要注意处理一些特殊情况比如用户输入的不是数字等情况下程序的健壮性问题这可能需要额外的代码来处理异常情况和错误检查具体的代码细节需要根据具体需求和环境来决定如何写得更加健壮和灵活
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 已采纳回答 10月23日
  • 创建了问题 10月23日