Malloc 和 scanf

2023-11-27

我对几种脚本语言相当有能力,但我最终强迫自己学习原始 C。我只是在玩一些基本的东西(现在是 I/O)。如何分配堆内存,在分配的内存中存储字符串,然后将其吐出?这就是我现在所拥有的,我怎样才能让它正常工作?

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

int main(int argc, char *argv[])
{
  char *toParseStr = (char*)malloc(10);
  scanf("Enter a string",&toParseStr);
  printf("%s",toParseStr);
  return 0;
}

目前我得到了像“8”\'这样的奇怪输出。


  char *toParseStr = (char*)malloc(10);
  printf("Enter string here: ");
  scanf("%s",toParseStr);
  printf("%s",toParseStr);
  free(toParseStr);

首先,字符串在scanfis 指定它将接收的输入。为了在接受键盘输入之前显示字符串,请使用printf如图所示。

其次,您不需要取消引用toParseStr因为它指向一个大小为 10 的字符数组,正如您分配的那样malloc. If你正在使用一个将其指向另一个内存位置的函数,then &toParseStr是必须的。

例如,假设您想编写一个函数来分配内存。那么你需要&toParseStr因为您正在更改指针变量的内容(这是内存中的地址——您可以通过打印其内容来亲自查看)。

void AllocateString(char ** ptr_string, const int n)
{
    *ptr_string = (char*)malloc(sizeof(char) * n);
}

正如你所看到的,它接受char ** ptr_string它读取为一个指针,存储了一个指针的内存位置will存储内存地址(在malloc操作)的已分配块的第一个字节n字节(现在它有一些垃圾内存地址,因为它尚未初始化)。

int main(int argc, char *argv[])
{
  char *toParseStr;
  const int n = 10;
  printf("Garbage: %p\n",toParseStr);
  AllocateString(&toParseStr,n);
  printf("Address of the first element of a contiguous array of %d bytes: %p\n",n,toParseStr);

  printf("Enter string here: ");
  scanf("%s",toParseStr);
  printf("%s\n",toParseStr);
  free(toParseStr);

  return 0;
}

第三,建议释放您分配的内存。尽管这是您的整个程序,并且当程序退出时该内存将被释放,但这仍然是一个很好的做法。

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

Malloc 和 scanf 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • 在WebKit中,如何获取资源的内容?

    我一直在编写一个 Mac 应用程序来检查每个 HTTP 请求 因此我使用 WebView 来加载请求 问题是我似乎无法弄清楚如何获取每个资源项的内容 我正在尝试通过以下方式获取资源的内容WebResourceLoadDelegate met
  • System.loadLibrary() 错误

    我成功地使用 android ndk Standalone 工具链交叉编译了一个 C 库 然后 我在 Eclipse 中创建了一个新的 Android 应用程序项目 当我将 mylib so 放入 jni 文件夹并执行 ndk build
  • 如何在 Docker 中将卷从容器挂载到主机?

    我有一个关于 Docker 中整个数据卷过程的问题 基本上这里有两个 Dockerfile 及其各自的运行命令 Dockerfile 1 Transmission over Debian Version 2 92 FROM debian t
  • R:从 GLMNet 获取 AIC/BIC/Likelihood

    我想知道是否可以从 GLMNet 获取 AIC 和 BIC 我发现 glmnet cr 似乎能够做到这一点 但我的回应是时间 而不是序数 我可以根据可能性自己计算它 但 glmnet 也不会返回 Tangential 我真的可以返回 l1n
  • 使用撰写文本进行链接

    我找不到如何链接我的Text 使用 Jetpack Compose 在撰写之前我要做的就是 Linkify addLinks myTextView Linkify EMAIL ADDRESSES or Linkify WEB URLS 显然
  • Flask-SQLAlchemy 中连接后的过滤

    我有两张桌子 location and country 正在尝试查询 在我的烧瓶应用程序中由以下模型表示 from sqlalchemy import Column DateTime ForeignKey Integer Numeric S
  • 将 URL 中的 HTTP 参数与 Android Intent Filter 相匹配

    我正在尝试组合一个意图过滤器 以便在浏览器中访问某个 HTML URL 时启动我的应用程序 当它是标准网址 例如 www stonyx com 时 我这样做没有任何问题 但是 我需要将 URL 与 HTTP 参数 如 www stonyx
  • 使用 Visual studio 2013 Professional 的 Windows Phone 8 应用程序 [重复]

    这个问题在这里已经有答案了 在将 Visual studio 2010 升级到 2012 2013 的混乱中 2013 年是创建 Windows 商店应用程序的唯一选择 但没有给出对 Windows Phone 应用程序开发的支持的清晰图片
  • 在java中将二维二进制矩阵转换为黑白图像

    我是java新手 我现在有只有 1 和 0 的 2D 二进制矩阵 我想将其保存为具有相同宽度和高度的jpg图像 黑白 我怎么能意识到这一点呢 我尝试了下面的代码但失败了 说 java lang IllegalArgumentExceptio
  • 如何建立 .NET 开发树? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 如何建立 NET 开发树 我使用这样的结构 projectname config where I put the configuration files doc where I put a
  • 当我输入“cd ~”时,“~”是什么目录?

    我刚开始使用 SSH 但是当我登录时 我最终会进入目录 通常与 FTP 进入时的目录相同 我仍然可以转到 但我不知道 是什么意思 家 它与 的关系在哪里 或者我怎样才能找到 是当前登录用户主目录的别名 要找出它到底在哪里 请输入pwd 代表
  • 两个文件包含 main() Visual Studio 的定义?

    我在 Visual Studio 2008 专业版中创建了一个项目 该项目为每个作业包含一个 cpp 文件 如下所示 Source Files 233 cpp test cpp 每个文件都包含 main 的定义 操作 CTRL F5 Err
  • 更新视图控制器之间的状态栏样式

    In my info plist 我有的文件View controller based status bar appearance set to YES 我有一个FirstViewController状态栏隐藏的地方 In my Secon
  • 如何从 lxml 获取原始 XML?

    我使用以下代码来定位 div parser etree HTMLParser tree etree parse StringIO page parser div tree xpath div class content 0 我唯一的问题是
  • clang 完成不起作用

    我为 vim 安装了 clang complete 但它不起作用 例如 当我输入std 在使用 vim 的 c 文件中 vim 窗口的底部显示 User defined completion U N P Pattern not found
  • java.lang.ClassNotFoundException:TopologyMain

    我正在尝试向本地风暴集群提交一个简单的字数统计拓扑 首先 我尝试使用 Maven 然后使用 Storm 命令行客户端 我使用 eclipse 创建了 JAR 文件 但是 它抛出主类未找到异常 谁能告诉我可能是什么问题 我在下面附上代码和异常
  • 如何在R中summary中获取群的众数

    我想比较两个不同索赔付款人的 CPT 代码的成本 两者都有平价和非平价提供商 我在用dplyr and modeest mlv 但它没有按预期工作 这是一些示例数据 source CPTCode ParNonPar Key net paid
  • 无法在 Firebase 控制台中创建新项目

    当我在 Firebase 控制台中创建项目时 收到错误 您已超出可以创建的免费 G oogle 项目的最大数量 请尝试在 Google API 控制台中删除未使用的项目或请求增加项目限制 我从 Firebase 控制台中删除了未使用的项目
  • 将点捕捉到一条线

    我有两个 GPS 坐标 它们连接在一起形成一条线 我还有一个 GPS 点 该点靠近该线 但从未完全在线上 我的问题是 如何找到沿线到给定点最近的点 游戏开发者对此有一个答案 它是用 C 编写的 但应该很容易移植 哪个CarlG has 好心
  • Malloc 和 scanf

    我对几种脚本语言相当有能力 但我最终强迫自己学习原始 C 我只是在玩一些基本的东西 现在是 I O 如何分配堆内存 在分配的内存中存储字符串 然后将其吐出 这就是我现在所拥有的 我怎样才能让它正常工作 include