使用指针迭代 argv[]

2023-11-24

我想使用以下代码,但不使用“[][]”索引数组并用指针替换它

for (int i = 0; i < argc; i++) {
    for (int j = 0; argv[i][j] != '\0'; j++) {
        //code
    }
}

我知道您可以使用指针来遍历数组,但我不确定如何使用第二个数组中未定义的长度(在本例中为输入的字符串)来执行此操作。由于 argv[] 的每个元素可以具有不同的长度,因此我想确保我可以正确读取字符并知道 argv[] 的每个元素何时结束以及下一个元素何时开始。

我希望它是这样的:(如果以下 main 标头是错误的,请告诉我。)

int main(int argc, char **argv) {
    for (int i = 0; i < argc; i++) {
        while(argv != '\0') {
            //code
            *argv+1;
        }
        //to skip null character
        argv+1;
    }
}

鉴于最后一个元素argv is NULL,您不需要对其进行索引或与任何内容进行比较argc如果你真的不想。

int main(int argc, char *argv[]) {
  for (char **arg = argv; *arg; ++arg) { // for each arg
    for (char *p = *arg; *p; ++p) {      // for each character
      process(*p);
    }
  }
}

*argNULL位于参数列表的末尾,这是错误的。*p'\0'在每个字符串的末尾,这是错误的。

从 N1256 5.1.2.2.1/2

如果声明了它们,则主函数的参数应遵守以下约束:

— argc 的值应为非负数。

— argv[argc] 应为空指针。

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

使用指针迭代 argv[] 的相关文章

随机推荐

  • Apache VirtualHost 403 禁止

    我最近尝试使用 Apache 设置测试服务器 该网站必须在域下运行www mytest com 我总是得到一个403 Forbidden错误 我使用的是 Ubuntu 10 10 服务器版本 文档根目录位于 dir 下 var www 以下
  • 如何使用msbuild创建nuget包而不重建项目?

    我想设置一个包含构建 测试和部署阶段的 CI CD 管道 我可以在构建阶段构建我的项目 msbuild src MyProject csproj t Restore msbuild src MyProject csproj p Config
  • 尝试导入错误:“firebase/app”不包含默认导出(导入为“firebase”)

    我尝试使用 React 进行 firebase 身份验证 但它显示错误 Attempted import error firebase app does not contain a default export imported as fi
  • gpus_ReturnGuiltyForHardwareRestart 崩溃

    应用程序在presentFrameBuffer中崩溃 在前台运行时 没有发生中断 它没有在第一帧中崩溃 它绘制了一段时间然后突然崩溃 我没有具体的重现步骤 但似乎与绘制特定的内容有关 但我仍然没有通过应用程序报告 openGL 错误 包括在
  • x86 BSWAP 指令 REX 不遵循 Intel 规范?

    我一直在使用 NASM 和 GAS 汇编 和反汇编 BSWAP x64 指令 并且都汇编指令BSWAP r15 as 490FCF以十六进制表示 反汇编器也将其反汇编为相同的指令 指令的 REX 前缀 49 因此设置了 REX W 位 位
  • 导出到 Excel 时,SSRS 不支持 CanGrow 属性

    我在 SSRS 报告中有一个表 表格单元之一包含订单中零件的描述 这些描述的长度可能会有所不同 因此我将 CanGrow 属性设置为 True 当我尝试将报告导出到 Excel 时 我希望如果文本长度超过单元格的宽度 那么单元格的高度将会增
  • $(window) 绑定 hashchange 如何检查部分哈希更改?

    我在学习Google Ajax Crawlable I use window bind hashchange控制ajax页面加载 我的网址如下 domain com keywords num 1 有两种改变 domain com apple
  • 在 OpenGLES 中让精灵正确面对相机

    我有一款或多或少是 2D 的游戏 但以 3D 渲染 摄像机悬停在 2D 游戏场上方 与完全垂直的角度倾斜约 20 度 从而为其提供一点 3D 视角 我有一些精灵需要渲染为完美的正方形 因为它们代表球形物体 我的第一种方法将四边形渲染在 2D
  • STL - 以下代码有什么问题?

    include stdafx h include
  • PDF 到 Github 风格的 Markdown

    我有一个 PDF 格式的项目描述 如果我能以某种方式设法在 github 网站上预览它 而不是单击 查看原始数据 并下载它 我会非常高兴 我以为可能有一个从 pdf 到 github 风格的 markdown 的转换器 但没有找到 再次声明
  • 字典应用程序的数据库设计

    目前我想开发移动设备的词典应用程序 词典本身使用离线文件 数据库来翻译单词 它只翻译两种语言 例如英语 西班牙语词典 我脑子里有一个简单的设计 这将是两个表 英语表和西班牙语表 每个表包含 word id id 它将作为其他表的外键 词 词
  • 重命名 cassandra 集群名称 1.2.6 时出错

    我在具有单个节点的集群中使用 cassandra 1 2 6 我正在尝试使用以下说明重命名集群 Cassandra 集群名称不匹配 完成所有步骤后 当我更改 cassandra yaml 文件后启动 cassandra 时 我继续出现相同的
  • matplotlib 再次显示图形

    使用 matplotlib 时 from matplotlib import pyplot as plt figure plt figure ax figure add subplot 111 ax plot x y figure show
  • 废弃的命名信号量未释放

    当 C 程序持有命名信号量时 当应用程序提前终止 例如按 Ctrl C 或关闭控制台窗口 时 它似乎不会被释放 至少在该进程的所有实例都终止之前不会 对于命名互斥体 在这种情况下会引发 AbandonedMutexException 但对于
  • 如何让 Subversion(或任何程序)执行定期提交?

    我想配置我的计算机 以便每半小时自动提交我正在处理的程序 我正在使用 svn 存储库 因此即使它只是一个每 30 分钟运行一次 svn ci 的脚本也没关系 问题是我不知道该怎么做 有人可以告诉我 或者指导我去做一些事情 让我让这个定期提交
  • 在新选项卡中打开链接[重复]

    这个问题在这里已经有答案了 我为我正在做的一个项目创建了一个网站 网站内容中有一些可以访问的外部网页的链接 同时 当用户单击其中一个链接时 他将被带到指定的链接 并且他将不再位于当前页面上 我想要做的是 当用户单击链接时 单击的链接中的指定
  • 如何确保 Rails API 免受 CSRF 的保护?

    我一直在使用 REST API 开发 Rails 应用程序 以便从移动应用程序进行访问 它运作得很好 当用户从移动应用程序登录时 他会得到auth token他在将来的 API 请求中使用它 问题是 API 也可以通过路径 api v1 从
  • python - 创建数据透视表

    我正在尝试从 python 中的 Numpy 数组创建数据透视表 我做了很多研究 但找不到直接的解决方案 我知道你可以用 Pandas 来做到这一点 但我在安装它时遇到了麻烦 但一定有一种方法可以在没有 Pandas 的情况下做到这一点 我
  • cakephp 在数据源默认值中找不到模型表

    我的数据库中只有一个名为 ficha seg 的表 我的模型文件的名称是 Ficha php 控制器的名称是 FichasController php 那么 为什么我收到错误 Error Table fichas for model Fic
  • 使用指针迭代 argv[]

    我想使用以下代码 但不使用 索引数组并用指针替换它 for int i 0 i lt argc i for int j 0 argv i j 0 j code 我知道您可以使用指针来遍历数组 但我不确定如何使用第二个数组中未定义的长度 在本