printf 中可以使用指向字符串的指针吗?

2024-03-30

我在想这样的事情:

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

int main(void) {
    //test pointer to string
    char s[50];
    char *ptr=s;
    printf("\nEnter string (s): ");
    fgets(s, 50, stdin);
    printf("S: %s\nPTR: %s\n", s, *ptr);

    system("PAUSE");
    return 0;
}

或者我应该使用带有 *(s+i) 和格式说明符 %c 的 for 循环? 这是通过指针和简单 printf 打印字符串的唯一可能方法吗?

更新: printf 使用数组第一个元素的地址进行操作,因此当我使用 *ptr 时,我实际上使用第一个元素而不是其地址进行操作。谢谢。


The "%s"格式说明符printf always期望一个char*争论。

Given:

char s[] = "hello";
char *p = "world";
printf("%s, %s\n", s, p);

it looks就像你第一次传递一个数组一样%s和第二个的指针,但实际上您(正确地)为两者传递了指针。

在 C 中,任何数组类型的表达式都会隐式转换为指向数组第一个元素的指针unless它处于以下三种情况之一:

  • 它是一元“&”(地址)运算符的参数
  • 它是一元“sizeof”运算符的参数
  • 它是初始化器中的字符串文字,用于初始化数组对象。

(我认为 C++ 还有一两个其他例外。)

实施printf()看到"%s",假设相应的参数是一个指向 char 的指针,并使用该指针遍历字符串并打印它。

第 6 条comp.lang.c 常见问题解答 http://www.c-faq.com对此有精彩的讨论。

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

printf 中可以使用指向字符串的指针吗? 的相关文章

随机推荐

  • 在 JavaScript 中使用 for..of 迭代时从数组中删除元素应该是安全的吗?

    我知道它适用于Set 但我的印象是它也可以与 Array 一起使用 所以我在 Chrome 中尝试了一下 很惊讶它不起作用 const array 1 2 3 4 5 6 for const item of array if item 3
  • 如何获取文件的文件类型

    有没有办法让VB net中的Windows资源管理器中显示的文件类型 例如 在 Windows 资源管理器的详细信息视图中可以看到 Name Date Modified Type Size A PDF 05 06 2017 5 54PM A
  • 无法访问生成配置管理器或 Visual C# 2010 Express 中的生成配置

    完整故事 通常 当我安装 Visual C 2010 Express 时 我做的第一件事就是切换到专家设置 这使我可以访问构建配置以及相应的管理器 最近的安装似乎行为不当 我创建的第一个项目是 XNA 4 0 刷新 项目 我导入了一些旧代码
  • Cordova / Ionic - 从 InAppBrowser 下载文件

    场景是这样的 我在InAppBrowser中打开一个网站 用户结束那里的工作后 网站生成一个 pdf供用户下载 问题是pdf没有下载 它在浏览器 有没有办法让它从 InAppBrowser 下载 我目前正在开发一个 iOS 应用程序 因此该
  • Laravel APP_LOCALE 西班牙语

    在 Laravel 5 4 中 env I have APP LOCALE es APP FALLBACK LOCALE en APP LOCALE PHP es US and in config app php locale gt env
  • 如何将数据库路由器添加到 Django 项目

    我正在按照此处有关如何在一个 Django 项目中处理多个数据库的说明进行操作主题 数据库 多数据库 https docs djangoproject com en 2 1 topics db multi db 我已经创建了所需的两个路由器
  • 如何向 UITableViewCell 添加手势?

    我想为每个单元格添加点击手势UITableView编辑其中的内容 添加手势的两种方法是通过代码或通过情节提要 我都尝试过 但都失败了 我可以添加一个手势吗every表格中的单元格带有情节提要拖放功能 它似乎只向第一个单元格添加手势 在代码中
  • 一小时后如何删除本地存储?

    我的数据是对象 我使用本地存储 javascript 保存它 如下所示 localStorage setItem storedData JSON stringify data 我只想保留该数据 1 小时 因此 如果超过 1 小时 数据将被删
  • 将 std::function 绑定到不同对象实例的相同函数

    是否可以重新绑定 std function 以指向相同的函数但具有不同的对象实例 假设我有一个对象 它的 std function 绑定到另一个函数 但如果该对象被复制到另一个实例 我想将 std function 重新绑定到该新实例而不是
  • bash 中双方括号的含义[重复]

    这个问题在这里已经有答案了 At this 凯尔 布 兰特回答中的问题 https serverfault com questions 53577 linux bash syntax meaning of and the 构造被描述为 ba
  • 使用字符串类输入空格时出现 cin 问题

    我有以下代码 main cpp include
  • 如何将字符串/数字附加到字符串?

    我有一个函数 void generateLevelFromPlist int currentLevel NSString mainPath NSBundle mainBundle bundlePath itemPositionPlistLo
  • python,pandas,按条件删除行

    您好 我需要帮助根据条件删除一些行 如果估计价格减去价格超过 1500 正 则删除该行 price estimated price 0 13295 13795 1 19990 22275 2 7295 6498 例如只有索引 1 会被删除
  • 如何在关系中设置主键?

    我想知道如何正确设置主键 in a Relation 例如 我们有ER图其中包含元素 关键属性 关键属性较弱 识别关系 关联实体 为了将其翻译成关系模型我们应该做一些技巧 上面的所有元素都处理关系的主键 但它们都是自然键 这样我们就可以离开
  • 下载 PMC 和 PubMed 数据库中的所有全文文章

    根据 NCBI Help Desk 回答的问题之一 我们无法 批量下载 考研中心 但是 我可以使用 NCBI E utilities 下载吗allPMC 数据库中的全文论文使用Efetch或者至少使用以下命令找到所有相应的 PMCidEse
  • 是否可以使用 jQuery(或其他库)*不*滚动 div ?

    我想以编程方式滚动 divwithout使用任何库 可能吗 如果可能的话 如何实现 谢谢 是的 var myEl document getElementById myEl myEl scrollLeft 12 myEl scrollTop
  • 测试当前目录是否在 Rails 项目内 (bash)

    有没有一种简单的方法来测试当前目录是否在 Rails 项目内 显然 Rails 本身对此进行了测试 以便使用 Rails 子命令 生成 脚手架等 因此大概有一种直接的方法来测试这一点 我正在寻找与您类似的东西测试您是否在 Git 存储库中
  • 如何确定Compact Framework 3.5中dll文件的文件版本[重复]

    这个问题在这里已经有答案了 我想在指定路径时确定 c 中 dll 文件的文件版本 假设 path x y z dll 给定路径时如何查找 z dll 的文件版本 注意 我使用 Compact Framework 3 5 SP1 Get th
  • Bootbox 警报框中的新行

    我想在我的 Bootbox Alert Box 中新建一行 我知道在 Javascript 中你可以使用 n但这似乎不起作用 这是我尝试过的 bootbox alert Hello n world 您可以使用 html 来实现 bootbo
  • printf 中可以使用指向字符串的指针吗?

    我在想这样的事情 include