Scanf 将输入的字符串解析为字符数组

2023-12-10

我想在两个单独的数组中解析用户输入(使用 scanf)。 g++ 编译没有错误,但出现内存访问错误(核心转储)。 (德语:“Speicherzugriffsfehler (Speicherabzug geschrieben)”)

char *top[10];
char *bottom[10];

for(i = 0; i < 5; i++){
    printf("Karte %d: Obere Werte? ", i );
    scanf( "%s", top[i] );
    printf( "Karte %d: Untere Werte? ", i);
    scanf( "%s", bottom[i] );
}

这里有什么问题?我尝试使用"stringcpy"带有临时变量("stringcpy(top[i], temp)"),但也没有成功。

有什么建议么?


您还没有为字符串分配内存。您提供给 scanf 的参数是未初始化的指针。

top[i] = "test"为变量分配一个指针并使用有效值对其进行初始化。

相比之下,scanf(..., top[i])尝试写到哪里top[i]点。但top[i]未初始化并指向某个随机位置,这会导致内存访问错误。

当你看着人扫描,您可以阅读下

转换
...
s
匹配一系列非空白字符;

现在是重要的部分

next 指针必须是指向字符数组的指针,该数组的长度足以容纳输入序列和自动添加的终止空字节 ('\0')。

所以你必须通过分配一个数组malloc()或者声明字符数组足够大。

char top[10][21];
char bottom[10][21];
int i;
for(i = 0; i < 5; i++){
    printf("Karte %d: Obere Werte? ", i);
    scanf("%20s",top[i]);
    printf("Karte %d: Untere Werte? ", i);
    scanf("%20s",bottom[i]);
}

With

scanf("%20s",top[i]);

您限制读取的字符数,以防止缓冲区溢出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scanf 将输入的字符串解析为字符数组 的相关文章

随机推荐

  • Swift:在 init 中调用 self 方法

    我想实现这样的事情 class A var a b c d Int init reset func reset a 1 b 2 c 3 d 4 func blablabla 无法编译 错误信息 初始化之前使用的变量 self a 我必须从以
  • PHP将一维数组转换为多维数组

    我有一个数组 tmpArr array A B C 我想处理这个数组并希望新数组为 tmpArr A B C C 即最后一个元素成为最终数组的值 有人能提出解决方案吗 请帮忙 提前致谢 迭代键数组并使用参考对于链的末端 arr array
  • 使用 rfc2254 中指定的 objectGUID 编码的活动目录过滤器不起作用

    我正在使用 java ldap 访问活动目录 更具体地说是 spring ldap 当过滤器按照 rfc2254 中指定的方式进行编码时 按 objectGUID 进行组搜索不会产生任何结果 这是十六进制表示形式的 guid 49 00 f
  • 如何停止或销毁正在运行的线程

    我有一个线程类 其中包含onCreate的一项活动 class MyThread extends Thread void run My code which takes time To run the thread MyThread mTh
  • 如何绘制自定义滑块控件?

    我创建了一个滑块条用户控件 但在运行时 当我向左或向右移动滑块时 为什么它没有到达末尾或吞下 在用户控件设计器中 我添加了一个 pictureBox 控件 然后在我做的代码中 using System using System Collec
  • 如何在 twitter-bootstrap 模式窗口中插入 django 表单?

    有人问过具体情况同样的问题四月份了 没有任何答复 但由于他提供的信息太少 这个问题被放弃了 我也有同样的问题 在一个main page html我有这一行 a href title Edit edit a 单击此处后 编辑模板将出现在 Tw
  • Unity - 通过 XML 的工厂

    我使用 Unity 框架作为 IoC 容器 我的配置看起来像这样
  • 如何在 Javascript 中重新加载页面而不出现 POSTDATA 警告?

    我想使用以下方法重新加载页面 window location reload true 但我收到 POSTDATA 警告 因为刷新功能想要重新发送以前的 POST 表单数据 如何刷新页面而不出现此警告 更新 我无法控制该项目 我无法解决 PO
  • 相对于(也是绝对定位的)父 DIV 的绝对定位 DIV 的位置?

    这是我在修复布局时经常遇到的一个问题 我有一个绝对定位的 DIV 我在里面放置了一个子 DIV 它也需要绝对定位 但我真的希望这个子 DIV 相对于父级的行为 这可能吗 或者我需要创建一个wrap DIV div class contain
  • Protractor如何测试select2

    我有一个 select2 下拉菜单 您需要先输入 2 个字符 然后选择您的项目 我无法用量角器对此进行测试 var select2 element by css div s2id person select2 click select2 s
  • PHP中检查字符串的第一个字符是字母还是数字? [复制]

    这个问题在这里已经有答案了 有没有办法检查字符串的第一个字符是字母还是数字 我不太确定该使用什么功能 有没有办法检查不使用正则表达式 因为我们在课堂上还没有学到这一点 我鼓励您阅读更多有关PHP 中的字符串 例如 您可以像数组一样取消引用它
  • JDBC 中的 Java 类型到 Postgres ltree

    有谁知道什么 Java 类型映射到 Postgres ltree 类型 我创建一个像这样的表 CREATE TABLE foo text name path ltree 一些插入 INSERT INTO foo name path VALU
  • 在 HTML 中使用内联事件处理程序是一种不好的做法吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 使用内联 JavaScri
  • MySQL全文搜索总是有0个结果?

    我读到使用全文搜索比使用 LIKE 更快 我已经更新了我的脚本 但它似乎总是有 0 结果 SELECT MATCH pages AGAINST doodle AS score FROM books WHERE MATCH pages AGA
  • 通过 exec() 从 php 调用 php 没有结果

    我有一个 PHP 脚本 可以根据用户输入创建其他 PHP 文件 基本上 有一些文件包含特定于语言的常量 define 可由用户翻译 为了避免运行时错误 我想测试新编写的文件是否存在解析错误 由于 不寻常 的字符序列 我在这里读过几篇关于SO
  • 将 ImageSharp 作为字段添加到 MarkdownRemark 节点(不是 frontmatter)

    我正在尝试执行以下 graphQL 查询 allMarkdownRemark limit 1000 edges node id parent id fields slug hero childImageSharp fixed src
  • 文本前后的行没有响应[重复]

    这个问题在这里已经有答案了 我试图在文本之前和之后各添加一行 但我希望它能够响应 目前我能找到的唯一方法是使用宽度 所以它不响应 我更愿意仅在伪元素之前和之后使用 但如果不可能 那么我会发现另一种方法 HTML div class sect
  • 将文件输出存储到变量中

    我想将文本文件的输出存储到一个变量中 这样我就可以将整个文件作为参数传递 我使用的是Windows 2003 Server 文本文件有多行 例如 10 20 210 100 fish 10 20 210 101 rock 我正在使用 Set
  • Android:如何检查是否启用了特定的 AccessibilityService

    我编写了一个 Android 应用程序 需要使用AccessibilityService 我知道如何检查手机上是否启用或禁用了辅助功能 但我无法找到一种方法来确定我的应用程序是否已在辅助功能菜单中专门启用 我想提示用户如果Accessibi
  • Scanf 将输入的字符串解析为字符数组

    我想在两个单独的数组中解析用户输入 使用 scanf g 编译没有错误 但出现内存访问错误 核心转储 德语 Speicherzugriffsfehler Speicherabzug geschrieben char top 10 char