在 Fortran 中分配字符数组

2024-07-04

我必须编写一个可以由 C 和 Fortran 调用的子例程。该子例程将文件名作为其参数之一。我知道为了与 C 良好地互操作,ISO C 绑定建议使用字符数组进行互操作。

我的问题是:是否存在易于编写的字符数组文字之类的东西?我有一个这样的子程序:

subroutine my_sub(char_array)
  use iso_c_binding, only: c_char
  char(kind=c_char, len=1), dimension(:), intent(in) :: char_array
  ...
end subroutine my_sub

是否可以通过以下方式调用它:

call my_sub('Hello World!')

或者我必须做一些可怕的事情,比如:

call my_sub((/ 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!' /))

我的主要问题似乎是它不喜欢假定形状的数组,并且给它一个设定的(大)大小也会输出随后拾取的所有垃圾内存。

有更好的方法吗?


序列关联规则允许类似的情况。您可以使用

call my_sub('Hello World!')

但前提是你让你的数组假定大小dimension(*)或明确的形状。

通常,在 Fortran 2008 中,您不能将假定形状数组用于 C 互操作过程。这将改变未来,但会更加复杂。

另一件重要的事情。只是使用iso_c_binding模块不会使过程具有 C 互操作性。你必须使用bind(C),可能带有绑定名称。这才是重要的事情。即使没有模块(仅限有限的模块),您也可以创建可互操作的过程。传递字符串而不是1字符数组的特性也取决于此。

这就是为什么我不喜欢说“使用 iso_c_binding 来创建可互操作的过程”。

该过程的接口必须在 Fortran 中明确。

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

在 Fortran 中分配字符数组 的相关文章

  • Java(正则表达式)-获取句子中的所有单词

    我需要将 java 字符串拆分为单词数组 假设该字符串是 Hi I need to split this string into a serie s of words 目前我正在尝试使用这个String strs str split w 但
  • 如何从 ByteBuffer 转换为 Integer 和 String?

    我转换了一个int使用 ByteBuffer 的字节数组putInt 方法 我该如何做相反的事情 那么将这些字节转换为 int 吗 此外 我使用 String 的将字符串转换为字节数组getBytes 方法 我如何将其反过来转换 这byte
  • 获取 C# 字符串的非第一个段的快速而巧妙的方法

    I do a split 在一个字符串上 我想拉出返回字符串的第一个元素以获得字符串的其余部分 f e THIS IS AN AMAZING STRING split 我想要得到除了这个之外的所有单词 这是 是一根神奇的绳子 该字符串在第一
  • 替换大字符串中的多个字符串的最快方法

    我正在寻找替换大 1mb 字符串的多个 500 子字符串的最快方法 无论我尝试过什么 String Replace 似乎都是最快的方法 我只关心最快的方式 不是代码的可读性 可维护性等 我不在乎是否需要使用不安全的代码或预处理原始字符串 每
  • 用 pandas 将字符串拆分为数字和文本

    设置 我有一个pandas包含 iso 列的数据框 其中包含化学同位素符号 例如 4He 16O 197Au 我想使用以下方法在绘图上标记许多 但不是全部 同位素annotate 函数于matplotlib 标签格式应在上标中包含原子质量
  • 字符串和数组泛型方法将来将被弃用

    在下面的链接 MDN 站点 中 它显示 字符串泛型是非标准的 已弃用 将来可能会被删除 请注意 如果不使用下面提供的填充程序 则不能跨浏览器依赖它们 他们所指的方法是否是他们在此声明下方提供的垫片中列出的方法 这是我见过的唯一对 字符串泛型
  • Go 中将字符串转换为二进制

    在 Go 中如何将字符串转换为其二进制表示形式 Example 输入 A 输出 01000001 在我的测试中 fmt Sprintf b 75 仅适用于整数 将 1 个字符的字符串转换为字节以获得其数字表示形式 s A st fmt Sp
  • GraphQL 字符串串联或插值

    我正在使用 GitHub API v 4 来学习 GraphQL 下面是一个为给定分支获取 Blob 文件 及其文本内容的损坏查询 query GetTree branch String master repository name blo
  • 在文本文件中搜索字符串的更快方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要使用 C 在一组文本文件中搜索一个大约 13 个字符的字符串 文本文件的数量正在变化 范围在 100 1000 之间 文件大小范
  • Mac OS X R 错误“ld:警告:找不到选项的目录”

    我正在尝试从源代码安装 R 包 但出现错误 installing source package mclust package mclust successfully unpacked and MD5 sums checked libs gf
  • 使用扩展函数将字符串中的每个单词大写

    我想在 Kotlin 中创建一个扩展函数 将字符串中每个单词的第一个字母转换为大写 the quick brown fox to The Quick Brown Fox 我尝试使用capitalize 方法 只能通过将第一个字母大写Stri
  • C++ 字符串文字转义字符的规则

    转义字符的规则是什么 在字符串文字中 是否有所有转义字符的列表 特别是当我使用 在 gedit 中的字符串文字中 并在其后跟随任意三个数字 它会为它们设置不同的颜色 我试图创建一个std string由带有字符的文字构造0后跟空字符 0 后
  • 评估 Fortran90 中派生类型中定义的字符串的特定字母[重复]

    这个问题在这里已经有答案了 我想评估变量的第三个字母是否myline is C or not 我试试这个 program main implicit none type line integer count 5 character len
  • 警告消息 (402):为参数临时创建的数组

    我不断收到警告消息 forrtl warning 402 fort 1 In call to I O Read routine an array temporary was created for argument 1 当我运行以下代码时
  • TRUE 的数值相当于 -1?

    我正在 Visual Studio 2012 中使用 Intel Fortran 来编译 Fortran 代码 当我尝试使用逻辑运算符时 我注意到独立的逻辑表达式会按预期产生 T 或 F 但是 如果我需要数字 T 或 F 0 或 1 当逻辑
  • 获取一个字符串在另一个字符串中出现的次数

    我需要输入两个字符串 第一个字符串是任何单词 第二个字符串是前一个字符串的一部分 我需要输出第二个字符串出现的次数 例如 字符串 1 CATSATONTHEMAT 字符串 2 AT 输出将为 3 因为 AT 在 CATSATONTHEMAT
  • 连接字符串的 Powershell 正则表达式?

    由于某种原因 我在解析 web config 文件中的连接字符串时遇到了困难 我已经获得了 connectionString 但我正在尝试获取所有值 例如 数据源 初始目录 Username etc 连接字符串如下所示 数据源 db sam
  • 如何在运行时修改strings.xml文件

    我将仅动态获取本地化数据 有办法更新吗strings xmlAndroid 运行时文件 我们可以在运行时向文件添加新字符串吗 我们可以在运行时向文件添加新字符串吗 不 您可以创建翻译数据库并维护该数据库 将新翻译动态添加到数据库并从那里读取
  • 使用 jQuery Toggle 更改 div 文本

    使用时slideToggle 如何更改文本关闭 显示 我做了一个简单的操作 但无法恢复文本更改 这是我所做的 document ready function open click function showpanel slideToggle
  • C 可变参数函数和 Fortran 的互操作性

    有没有办法声明 C 可变参数函数并从 Fortran 调用它 我需要调用此函数来计算用字符串标记的向量之间的一些点积 我的想法是声明如下所示的内容 其中参数的变量列表包含字符串文字 如果参数的变量列表为空 那么我将在标准标签中进行查找并执行

随机推荐

  • 将证据权重 (WoE) 替换为相应的值

    我有一个名为x其最小值为零 最大值为 200 万 所以我将值切成像这样的代码 bins 0 1 10000 20000 50000 60000 70000 100000 2000000 df input X bins pd cut df i
  • Python:带约束的多元非线性求解器

    给定一个函数f x 需要一个输入向量x并返回相同长度的向量 如何找到函数设置约束的根x 例如 每个组件的范围x 令我惊讶的是 我找不到很多关于此的有用信息 在 scipy 列表中优化和求根算法 https docs scipy org do
  • 检查字符串是否可能是名称的缩写

    我正在尝试开发一个 python 算法来检查一个字符串是否可以是另一个单词的缩写 例如 fck是一个匹配项fc kopenhavn因为它匹配单词的第一个字符 fhk不会匹配 fco不应该匹配fc kopenhavn因为没有人会把 FC Ko
  • 组合点击和触摸启动事件不起作用

    我有一个网站 我正在尝试使其在移动设备上也能正常运行 但是 当我分别组合 PC 和平板电脑的单击和 touchstart 事件时 两者都不起作用 单击事件附加到的元素不会触发 谁能解释我应该如何解决这个问题 这是一个元素不起作用的示例 笔具
  • 以编程方式为存储库启用 Github Pages

    有没有办法通过api启用Github页面 不请求页面构建 我的意思是最初启用该功能并指向分支 您只需将内容推送到远程 git 存储库即可 你必须区分用户页面 用户名 github io 和项目页面 用户名 github io 项目名 用户页
  • 如何用手指在WP7中绘制形状?

    如何用手指在WP7中绘制形状 我正在尝试实现一个简单的绘画应用程序 但我不确定如何进行绘图 有两个示例供您使用 您可以从以下链接下载 示例项目1 http windowsphonegeek com tips drawing in wp7 2
  • 准备 iPhone 的调试器支持

    我无法在 iPhone 上安装该应用程序 我被这条消息困住了 准备 iPhone 的调试器支持 在这里尝试了所有答案 https stackoverflow com questions 46316373 xcode9 iphone is b
  • 连接到主机 localhost 端口 22:连接被拒绝

    在我的本地计算机上安装 hadoop 时 出现以下错误 ssh vvv localhost OpenSSH 5 5p1 OpenSSL 1 0 0e fips 6 Sep 2011 debug1 Reading configuration
  • 如何清除分享链接缓存?

    例如 我尝试分享一个链接http apps facebook com appname http apps facebook com appname 在我的个人资料页面上的 更新状态 下 我修改了应用程序的内容后 它仍然显示缓存 我尝试使用h
  • ((指针)(P)+1)^什么时候可以起作用?

    我正在研究delphiXE2 我正在研究PInteger 如果我在我的delphi代码中这样做 var P PInteger testInt Integer Scores array 0 4 of Integer 33 44 56 78 7
  • 使用 SSE2 优化 RGB565 到 RGB888 的转换

    我正在尝试使用 SSE2 和基本公式来优化从 565 到 888 的像素深度转换 col8 col5 lt lt 3 col5 gt gt 2 col8 col6 lt lt 2 col6 gt gt 4 我采用两个 2x565 128 位
  • 实现 gensim.LdaMallet 时出错

    我按照此链接上的说明进行操作 http radimrehurek com 2014 03 tutorial on mallet in python http radimrehurek com 2014 03 tutorial on mall
  • OpenCV 中二值图像的 width 和 widthStep 不同

    我使用 cvLoadImage 在 OpenCV 中加载二进制图像 如下所示 IplImage myImg cvLoadImage
  • Windows 上的 Xvfb

    我正在使用 pyvirtualdisplay 使用无头 Firefox 浏览器运行测试 这是我正在使用的代码 from selenium import webdriver from selenium webdriver support ui
  • VB6 的线程模型是什么?

    我正在将一个古老的 VB6 程序移植到 C Net 我不太了解VB6 我问这个是为了更好地理解它 旧的VB6程序有一个程序执行的主过程 但是它also有许多用于套接字事件或计时器事件的事件处理程序 以及这些经常操纵的共享资源 例如 公共全局
  • 如何在CSS中搜索某些内容时隐藏搜索图标

    我想隐藏search当用户搜索某些内容时的图标 连我都想躲起来 保留图标和清除图标x就这样 问题如下图所示 NOTE 我想保持相同的差距search icon and Search text input type search width
  • React:将组件存储在对象中

    我的用户配置文件中有几十个字段 我正在尝试构建一种有效的方法来在适当的输入表单组件中显示它们 例如 配置文件可能如下所示 profile1 name Cornelius Talmadge phone 1 如果我可以像这样堆叠组件 expor
  • 处理本地存储库中的旧快照的最佳方法?

    我们有一个 Nexus 本地存储库管理器 用于处理我们所有的内部项目 以及外部存储库的镜像 对于我们的内部项目 我们只保留最新版本的快照构建 例如 如果我们有 ProjectX 1 0 1 1 和 1 2 SNAPSHOT 那么一旦 1 2
  • 如何使用 OpenID Connect WebFinger 端点?

    正在阅读描述在这里 https connect2id com learn openid connect optional endpoints它说 WebFinger 允许根据给定用户的电子邮件地址或其他一些信息动态发现 OpenID Con
  • 在 Fortran 中分配字符数组

    我必须编写一个可以由 C 和 Fortran 调用的子例程 该子例程将文件名作为其参数之一 我知道为了与 C 良好地互操作 ISO C 绑定建议使用字符数组进行互操作 我的问题是 是否存在易于编写的字符数组文字之类的东西 我有一个这样的子程