scanf char 指针中的字符串[重复]

2023-11-21

我想扫描一个字符串并指向一个char指向此扫描字符串的指针。

int main(int argc, char *argv[]) {

    char *string;
    scanf("%s",&string);
    printf("%s\n",string);

}

但给出警告说

警告:格式“%s”需要“char *”类型的参数,但参数 2 类型为“char **”

如何扫描 a 中的字符串char *没有警告。

Edit:它适用于下面带有警告的代码,我将其深入到上面的代码,以便非常具体。

int main(int argc, char *argv[]) {

    int n = 2;

    char *strings[2];
    for(int i = 0; i < n; i++){
        scanf("%s",&strings[i]);
        printf("%s\n",&strings[i]);
    }

}

enter image description here


首先,%s in scanf()期望一个指向char, not a 指向指针的指针char.

Quoting C11,第 §7.21.6.2 章/第 12 页,fscanf() (强调我的)

s
Matches a sequence of non-white-space characters.286)

If no l length modifier is present, the corresponding argument shall be a pointer to the initial element of a character array large enough to accept the sequence and a terminating null character, which will be added automatically. [...]

Change

scanf("%s",&string);

to

scanf("%s",string);

也就是说,您需要分配内存string在你真正尝试之前scan进去。否则,您最终将使用未初始化的指针来调用未定义的行为.

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

scanf char 指针中的字符串[重复] 的相关文章

随机推荐

  • 在 Rails 3 中设置会话超时

    这看起来很简单 我试图让 Rails Active Record 会话在 2 分钟后超时 因此 两分钟后我希望我的用户必须重新登录 我只是在跑步rails server 即 WebBrick 在我的本地开发机器上 我知道这与以下代码有关co
  • 您可以使用异步函数通过 useState 设置初始状态吗

    我的组件依赖于本地状态 useState 但初始值应该来自http响应 我可以传递一个异步函数来设置初始状态吗 如何从响应中设置初始状态 这是我的代码 const fcads gt let good Axios get admin geta
  • 如何在Java中实现行级安全性?

    我目前正在评估身份验证 授权框架 Apache Shiro 看起来很好 但我是缺少行级安全性特征 例如 数据库中可能存在特殊行 这些行只能由具有特殊权限的用户可见和访问 为了避免不必要的往返 我们当前修改 SQL 查询以与我们的授权数据连接
  • 我可以更改 PyCharmProjects 的位置/名称吗?

    我在 Ubuntu 12 04 上使用 PyCharm 3 0 它自动创建了一个名为的文件夹 PyCharmProjects用于存储项目文件夹 是否有可能 更改此文件夹的位置 更改此文件夹的名称 我在界面 JetBrains 网站或设置文件
  • mPDF - 基于元素高度的分页符

    我在用着mpdf在 Laravel 和这个包4 0版本 问题是我有一个不同高度的问题列表 其中有 4 个选项 而且我不知道每个 div 标签的确切高度和近似高度 其中有哪些问题和答案选项 我不想要我的某些部分转到另一个页面的问题 我的问题的
  • html5shiv 无法在 IE8 中运行?

    我无法在 IE8 中使用 HTML5 元素获取样式 我已经搜索过 stackoverflow 和 Google 没有任何建议我尝试过工作 我从一个更复杂的页面开始 我正在将 XHTML 框架转换为 HTML5 并且没有丝毫担心 但是在模拟和
  • 在(c#)库中使用 List 与 LinkedList 的性能差异是什么[重复]

    这个问题在这里已经有答案了 可能的重复 什么时候应该使用 List 和 LinkedList 这个问题与我之前合并的问题有关 与列表与链表 如果我不希望对我的数据结构使用按索引访问 那么通过使用 LinkedList 而不是 List 可以
  • C++ 程序因 std::bad_alloc 而终止,但 valgrind 报告没有内存泄漏

    我的程序失败并显示 std bad alloc 错误消息 该程序是可扩展的 因此我使用 valgrind 在较小的版本上进行了测试 并且没有内存泄漏 这是统计力学的应用 所以我基本上制作了数百个对象 更改它们的内部数据 在本例中为双精度的
  • 应用程序池启动模式:OnDemand 与 AlwaysRunning,哪个最好?

    我的应用程序池一直使用 OnDemand 启动模式 但最近我听说 AlwaysRunning 模式 它允许部署到 IIS 的 ASP NET 应用程序在部署后立即可用 启用此功能似乎会导致 IIS 在应用程序部署后立即启动该应用程序 从而消
  • python:绑定如何工作

    我想了解 python 中的变量绑定到底是如何工作的 让我们看看这个 def foo x def bar print y return bar y 5 bar foo 2 bar 这打印 5 对我来说似乎是合理的 def foo x def
  • 从 url 安装 apk

    我正在尝试从 URL 安装 APK 这是我的代码 Intent promptInstall new Intent android content Intent ACTION VIEW promptInstall setFlags Inten
  • 通过命令行删除 PDF 注释

    有没有办法批量删除所有 PDF 注释 包括突出显示 注释 注释 箭头 例如 通过命令行 下列系列命令解决了我的问题 pdftk in pdf output uncompress sed Annots d pdftk output out p
  • 如何避免指针运算中的乘法?

    如果我写 int main int argc char argv int temp 50 3 return temp argc temp 0 并用 Visual C 编译它 我得到 009360D0 55 push ebp 009360D1
  • 用于验证 URL 的 JavaScript 正则表达式

    我正在使用以下正则表达式验证 URL 我想验证谷歌网站但它返回 false 可以在下面的 R E 中更改哪些内容来验证谷歌网站 console log learnRegExp http www google com 123 false co
  • 如何在gin中对路线进行分组?

    我想将我的路线分组在不同的文件中 这样主文件就不会很混乱 我想在他们自己的文件中添加类似的内容 v1 router Group v1 v1 Group users usersRoutes v1 Group pictures pictures
  • 如何禁用除最顶层视图之外的所有视图的触摸输入?

    我有一个包含多个子视图的视图 当用户点击子视图时 子视图的大小会扩大以覆盖大部分屏幕 但其他一些子视图在下面仍然可见 当子视图之一像这样 展开 时 我希望我的应用程序忽略对其他子视图的触摸 有没有一种简单的方法可以实现这一目标 我可以编写代
  • 如何从 Flutter 中的通知导航到应用程序中的特定 MaterialPageRoute

    是否可以通过通知单击导航到应用程序中的特定 MaterialPageRoute 我在主屏幕中配置了通知 void configureNotifications final FirebaseMessaging firebaseMessagin
  • 如何访问派生类中的受保护成员?

    From http www parashift com c faq lite basics of inheritance html faq 19 5 在类的受保护部分中声明的成员 数据成员或成员函数 只能由该类的成员函数和友元以及派生类的成
  • Class.getResource() 和 ClassLoader.getResource() 有什么区别?

    我想知道两者之间有什么区别Class getResource and ClassLoader getResource 编辑 我特别想知道文件 目录级别是否涉及任何缓存 如 目录列表是否缓存在类版本中 据我所知 以下内容本质上应该做同样的事情
  • scanf char 指针中的字符串[重复]

    这个问题在这里已经有答案了 我想扫描一个字符串并指向一个char指向此扫描字符串的指针 int main int argc char argv char string scanf s string printf s n string 但给出