使用二维动态分配字符串创建动态分配结构

2024-02-15

我正在尝试扫描字母网格。cases是字母网格的数量,r, c是每个网格的行数和列数。我想我可以创建一个内部包含二维数组的结构数组。我已经为此工作了几个小时,但它仍然给我带来问题:

  • 警告:

    • 警告 C4477(12号线)-‘scanf_s’:格式字符串‘%s’需要‘char*’类型的参数,但可变参数 1 的类型为‘int’
    • 警告 C4473(12号线)-‘scanf_s’:没有为格式字符串传递足够的参数
  • Errors:

代码:

scanf_s("%d", &cases);
struct grid { 
    char **grid; 
};
struct grid *grids = (struct grid*)malloc(cases * sizeof(struct grid));

for (i = 0; i < cases; i++) {
    scanf_s("%d %d", &r, &c);
    grids[i].grid = (char**)malloc(sizeof(char*) * r);
    for (k = 0; k < r; k++) {
        grids[i].grid[k] = (char*)malloc(sizeof(char) * (c+1));
        scanf_s("%s", grids[i].grid[k], (c+1));
    }           
}

我必须稍微调整一下问题中的代码,还要添加一些缺失的部分(顺便说一句,也应该提供这些部分),以获得可编译的(使用VStudio2010) piece.

main00.c:

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


struct grid { 
    char **grid; 
};


int main() {
    int cases, r, c, k, i;
    struct grid *grids;

    scanf_s("%d", &cases);
    grids = (struct grid*)malloc(cases * sizeof(struct grid));

    for (i = 0; i < cases; i++) {
        scanf_s("%d %d", &r, &c);
        grids[i].grid = (char**)malloc(sizeof(char*) * r);
        for (k = 0; k < r; k++) {
            grids[i].grid[k] = (char*)malloc(sizeof(char) * (c + 1));
            scanf_s("%s", grids[i].grid[k], (c + 1));
        }           
    }
    return 0;
}

Notes:

  • You were compiling the code as C++ (as @alk noticed), and this is what completely threw you off course. In order to fix that either:
    • 将文件扩展名设置为.c(你可以离开VStudio编译时默认;这样它将根据其扩展名使用适当的编译器来编译每个源文件)
    • 明确地将源文件编译为C。您可以从VStudio 项目属性 -> C/C++ -> 高级 -> 编译为,并选择编译为 C 代码。欲了解更多信息,请访问[MS.Docs]:/Tc、/Tp、/TC、/TP(指定源文件类型) https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/032xwy55(v=vs.100)。就我个人而言,我认为前一种选择更直接
  • 移动变量声明before任何陈述(我认为这可能是设置C++编译器)。这是对老年人的限制C标准(我怀疑它仍然存在),但是(VStudio 2010) C编译器仍然强制执行它(至少默认情况下)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用二维动态分配字符串创建动态分配结构 的相关文章

随机推荐

  • 您应该在哪里启用 SSL?

    我的最后几个项目涉及销售产品 服务并需要用户输入信用卡信息等的 结账 流程的网站 显然 我们获得 SSL 证书是为了保证其安全性 并让客户放心 然而 我对它的微妙之处有点一无所知 最重要的是网站的哪些部分应该 使用 证书 例如 我访问过一些
  • spring批处理异常无法构造java.util.Map$Entry

    从命令行执行 Spring Batch 作业时 我们面临以下异常 Spring 批处理版本 3 0 2 RELEASE 春季版本 4 0 0 RELEASE xStream 版本 1 4 7 数据库 mysql 我正在连接到新的数据库模式
  • Android 中没有显示 ActionMode Bar 的所有图标?

    我已经为我的操作模式栏创建了一个带有图标的菜单 但并非所有菜单都在操作模式栏中显示有图标 这是我的菜单 xml 文件 menu menu
  • Visual Studio 2017 / 2019 添加缺失的区域

    使用 VS2017 2019 创建 ASP NET MVC Core Web 应用程序时 发现上下文菜单中缺少 添加区域 选项 该区域并未从 VS 2017 19 中删除 但已移至脚手架中 您可以使用以下步骤访问该区域 1 右键单击您的项目
  • Keras 中的 RMSE/RMSLE 损失函数

    我尝试参加我的第一次 Kaggle 比赛RMSLE给出作为所需的损失函数 因为我没有找到如何实现这个loss function我试图满足于RMSE 我知道这是一部分Keras过去 有什么方法可以在最新版本中使用它 也许通过定制功能backe
  • 将毫秒转换为天:小时:分钟:秒:毫秒的 Bash 脚本

    我编写了以下 bash 脚本 将毫秒转换为天 小时 分钟 秒 毫秒 以使日志文件更具可读性 bin bash Constants CON DAYS 0000000115741 CON HOURS 000000277778 CON MINUT
  • 从模态/弹出窗口中解开segue,导致开始/结束外观过渡的呼叫不平衡

    我有以下设置 导航控制器 gt VC1 Push gt VC2 PopOver 或 Modal Segue gt VC3 VC3 正在展开回 VC1 当从 VC2 到 VC3 的 Segue 为 PopOver 和 Modal 时 展开会以
  • Google Visualization - 在事件表排序中,将特定行保留为第一个可见记录?

    当用户单击标题进行排序时 我希望标记为 总计 的行保持为可见的第一行 我可以捕获表排序事件 如下所示 google visualization events addListener table getChart sort function
  • 不可行的函数模板的类型推导

    In 他的回答 https stackoverflow com a 22259156 420683 to 这个问题 https stackoverflow com q 22258054 420683以及评论区 约翰内斯 绍布 https s
  • 使用 Blogger API v3 和 Python 插入博客文章草稿

    我正在尝试使用 Blogger Api v3 客户端库发布一篇文章 https developers google com blogger docs 3 0 libraries https developers google com blo
  • NSPredicate 和数组

    我有一个简短的问题 我有一个NSArray洋溢着Cars 继承自 NSObject Car有 property NSString engine 也被视为 synthesize 现在我想使用过滤数组NSPredicate predicate
  • Bootstrap 中的固定页脚

    我正在尝试引导程序 http getbootstrap com 我想知道 如果内容滚动 如何修复底部的页脚而不使其从页面上消失 要让页脚粘在视口底部 请给它一个固定位置 如下所示 footer position fixed height 1
  • Vue.js v-if 对变量变化没有反应

    我正在使用 vue js 并且在正确使用 v if 方面遇到了一些困难 我正在尝试在模板内渲染条件模板 在创建的方法中 变量isloaded设置为 true 这应该会导致模板重新呈现并让 正在加载数据 消息消失 然而 日志表明 2s 的延迟
  • 如何添加 .NET Framework 安装先决条件

    我在 Microsoft Visual Studio 中有一个 C Windows 窗体项目2017 我添加了 Visual Studio 安装程序安装向导项目来为我的应用程序创建安装程序 这是我第一次使用安装程序项目 安装程序正确地具有
  • 按复杂标准合并/连接 2 个 DataFrame

    我有 2 个大型数据集 每个数据集有 70K 到 110K 我想关联 比较两者 并根据某些条件 标准查找 set2 中的哪些项目可以在 set1 中找到 我当前的策略是按公共字段对两个列表进行排序 然后运行嵌套for循环 执行条件if测试
  • 在客户端用 JavaScript 逐行读取文件

    您能帮我解决以下问题吗 Goal 在客户端 通过 JS 和 HTML5 类在浏览器中 逐行读取文件 无需将整个文件加载到内存中 Scenario 我正在开发应该在客户端解析文件的网页 目前 我正在阅读本文件中描述的文件article htt
  • 如何在同一端口中运行 Angular 和 Node.JS Express?

    这可能是重复的问题 但无法理解如何配置 FE 和 BE 一起运行它们 我已经经历过this https stackoverflow com q 39845526 and this https stackoverflow com q 4678
  • 使用“from x import *”记录文件

    sphinx 的 automodule 和其他自动功能可用于记录包含以下内容的模块from x import 声明不包含导入模块的所有文档 编辑 根据mzjn的观点 只要导入的方法 module 属性与模块名称不同 不应记录它们 然而 对于
  • FBSDKLoginManager 代码从 Objective-C 到 swift

    任何人请帮助我如何将 FBSDKLoginManager 代码转换为快速编程提前感谢我附上 Objective C 中的代码 IBAction btnFacebookPressed id sender FBSDKLoginManager l
  • 使用二维动态分配字符串创建动态分配结构

    我正在尝试扫描字母网格 cases是字母网格的数量 r c是每个网格的行数和列数 我想我可以创建一个内部包含二维数组的结构数组 我已经为此工作了几个小时 但它仍然给我带来问题 警告 警告 C4477 12号线 scanf s 格式字符串 s