在 C 中打印字符串 - 如何在 C 中打印字符串

打印字符串是编程中的一项基本操作。它帮助您输出信息,检查和调试您的代码,并向用户显示提示信息。

在本文中,您将学习在 C 中打印字符串的一些不同技术。

(本文视频讲解:java567.com)

在 C 中字符串是什么?

字符串是一系列字符,如字母、数字或符号,它们被组合在一起。它用于在程序中表示文本。

在 C 中,字符串不是内置数据类型。相反,它们被表示为以特殊字符 null 终止的字符数组,\0

这是一个在 C 中创建字符串的示例:

char greeting[] = "Hello world!";

在上面的代码中,我声明了一个名为 greeting 的字符数组,并用双引号 " " 包裹的字符串 Hello world! 进行了初始化。

C 编译器会自动在 Hello world! 的末尾包含 null 终止符 \0

如何使用 printf() 函数在 C 中打印字符串

printf() 函数是 C 中打印字符串最常用的方式之一。

它代表着 “print formatted”(格式化打印),并属于标准输入/输出库 stdio.h。因此,为了使用它,您需要首先在程序的开头包含 stdio.h 头文件。

让我们看一下以下示例:

#include <stdio.h>int main(void) {char greeting[] = "Hello world!";printf("%s\n", greeting);
}// 输出:
// Hello world!

在上面的示例中,我首先在程序的开头包含了 stdio.h 头文件,其中包含了 printf() 函数的声明。

接下来,我声明了一个名为 greeting 的字符数组,并用文本 Hello world! 进行了初始化。

最后,我使用 printf() 函数打印文本 Hello world!

在使用 printf() 函数打印字符串时,您需要使用格式说明符。

格式说明符充当占位符,告诉 printf() 函数如何格式化和打印特定类型的数据。它们以百分号 % 开头,后跟指定要格式化的数据类型的字符。字符串的格式说明符是 %s

因此,在行 printf("%s\n", greeting); 中,%s 格式说明符告诉 printf() 打印存储在 greeting 变量中的字符串,后跟换行字符 \n

请注意,当打印字符串时,%s 格式说明符不包括 null 终止符 \0。它打印字符串中的字符,直到遇到它为止。

如何使用 puts() 函数在 C 中打印字符串

用于打印字符串的另一个函数是 puts()

让我们看一个以下示例:

#include <stdio.h>int main(void) {char greeting[] = "Hello world!";puts(greeting);
}// 输出
// Hello world!

在上面的示例中,我首先包含了包含 puts() 声明的 stdio.h 头文件。

然后,我声明了一个字符数组,并用文本 Hello world! 进行了初始化。该字符串自动以 null 终止符 \0 结束。

最后,我使用 puts() 函数将字符串打印到控制台,并将字符串变量 greeting 作为参数传递。

puts() 函数会自动在字符串末尾添加换行字符 \n

请注意,puts() 函数用于打印以 null 终止的字符串。以 null 终止的字符串是存储在内存中的字符序列,后跟一个称为 null 终止符 \0 的字符。

到目前为止,所有的示例都只使用了以 null 终止的字符串,例如 char greeting[] = "Hello world!";。在内存中,它将被表示为 ['H', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd', '!', '\0']

故意创建非以 null 终止的字符串在 C 中并不常见。

以下是一个非以 null 终止字符串的示例:char greeting[] = {'H', 'e', 'l', 'l', 'o'};这个字符数组不包括 null 终止符 \0,因此它是一个非以 null 终止的字符串。

如果尝试使用 puts() 打印非以 null 终止的字符串,您将得到未定义的行为,例如字符串末尾的垃圾字符:

#include <stdio.h>int main(void) {char greeting[] = {'H', 'e', 'l', 'l', 'o'};puts(greeting);
}// 第一次运行代码时的输出:
// Helloq// 第二次运行代码时的输出:
// Hellop// 第三次运行代码时的输出:
// Hellow

printf() 函数 VS puts() 函数 - 有何区别?

您可能想知道 printf()puts() 之间的区别是什么。

puts() 函数按照原样打印文本,不进行任何格式化。它还会自动在字符串末尾添加换行字符。

printf() 函数不会自动添加换行符 - 您必须显式添加。

但是,它允许进行格式化输出,并且可以更灵活地控制和插入不同数据类型到格式字符串中:

#include <stdio.h>int main(void) {char name[] = "John";int age = 30;// 使用 puts() 打印字符串puts("Using puts():");puts("My name is John and I'm 30 years old.");// 使用 printf() 打印字符串printf("\nUsing printf():\n");printf("My name is %s and I'm %d years old. \n", name, age);
}

在上面的示例中,puts() 函数打印了一个简单的字符串,没有进行任何格式化。它还自动在字符串末尾添加了换行符 \n

另一方面,printf() 函数格式化了字符串并嵌入了两个变量值。它使用格式说明符,例如 %s 用于字符串和 %d 用于整数,来指定变量保存的数据类型,以及变量应该插入到字符串中的位置。它还在末尾添加了换行符。

结论

在本文中,您了解了 C 中用于打印字符串的两个最常用的函数。

printf() 函数通常用于向控制台打印格式化文本。它允许您格式化输出并打印字符串、数字和字符。

puts() 函数相比 printf() 更简单。它非常适用于基本文本输出,并自动在打印的字符串末尾添加换行符 \n

感谢您的阅读,祝您编程愉快!

(本文视频讲解:java567.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第G8周:ACGAN任务

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 参考论文 这周主要任务就是根据之前GAN&#xff0c;CGAN&#xff0c;SGAN网络架构搭建…

python_django中小学家校互动系统vue_flask家校联系

实现了一个完整的家校互动系统&#xff0c;其中主要有作业信息模块、学校管理员模块、学生学籍模块、学生成绩模块、学科模块、系统新闻模块、系统公告模块、校内新闻模块、校内公告模块、用户表模块、token表模块、关于我们模块、收藏表模块、年级模块、家长模块、教师模块、互…

【C++例8-2】 将单目运算符“++”重载为成员函数

课本里的例题&#xff0c;记录一下知识点 1.前置运算符返回值是Clock类引用&#xff0c;后置返回的是Clock类 前置是直接自增&#xff0c;然后参与运算&#xff0c;后置是先参与运算&#xff0c;再自增 ①所以前置可以直接改变&#xff0c;并返回引用&#xff0c;返回引用也…

Spark Standalone模式部署

准备至少2台虚拟机&#xff0c;装好linux系统&#xff0c;我装的是Ubuntu20.04。 1.修改主机名&#xff08;每台&#xff09; 1&#xff09;修改/etc/hostsname内容&#xff0c;主节点改为master&#xff0c;子节点改为slaver1 sudo vim /etc/hostname 2&#xff09;在/etc/…

如何通过外发文件控制,保障企业对核心业务数据的控制力?

外发文件控制是企业数据安全管理的重要组成部分&#xff0c;它涉及到对从企业内网向外发送的文件进行严格控制和管理&#xff0c;以防止敏感或机密信息的泄露。以下是常见的一些外发手段及问题&#xff1a; &#xff08;1&#xff09;IM通讯工具 如微信、QQ、企业微信、钉钉、…

4.0-Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解

Python 序列&#xff08;Sequence&#xff09;是指按特定顺序依次排列的一组数据&#xff0c;它们可以占用一块连续的内存&#xff0c;也可以分散到多块内存中。Python 中的序列类型包括列表&#xff08;list&#xff09;、元组&#xff08;tuple&#xff09;、字典&#xff08…

如何通过文件外发管理系统,保护企业机密数据不外泄?

在互联网时代&#xff0c;企业与外界进行频繁的信息沟通已成为必要的一种业务模式&#xff0c;而在交互的过程中很可能会涉及到企业的相关敏感信息&#xff0c;一旦不慎流出就将会面临失控的风险。像员工在掌握了公司的关键信息后另起炉灶&#xff0c;设立同类型公司&#xff0…

C++中整型乘以0.01快还是除以100快?

相关代码及说明请见下文&#xff1a; int64_t mulFunc(int64_t a) {return (int64_t)(a * 0.01); }int64_t divFunc(int64_t a) {// 注意&#xff0c;除数必须是整型, 例如你不能把100改为100.0。如果你改了&#xff0c;计算速度将大幅下降(因为这样一来将计算过程变为浮点运算…

如何正确设计 TCP/IP 流式应用层网络协议

在我多年打黑工的职业生涯之中&#xff0c;除了在盛大游戏出身的半个老师&#xff08;做游戏服务器的&#xff09;曾今深入的教过我&#xff0c;关于正确的 TCP/IP 流式应用层网络协议的设计理念&#xff0c;前往其它公司打黑工、包括一些的开源项目&#xff0c;见识到的 TCP/I…

每个开发人员都应该知道的13个Nodejs库

Node.js&#xff0c;作为一种广受推崇的后端JavaScript环境&#xff0c;已成为众多网络开发者的首选。它不仅位列全球最流行编程语言之一&#xff0c;还通过JavaScript库的代码复用功能&#xff0c;极大地提升了项目开发效率。然而&#xff0c;面对众多选项&#xff0c;挑选合适…

mybatis快速入门-注解版

mybatis 使用注解&#xff0c;简化 xml 配置&#xff0c;汲及到动态 sql 或是多表查询&#xff0c;还是使用 xml 映射文件配置编写。(企业工作中&#xff0c;几乎全是 xml 配置&#xff0c;xml 的 sql 使用注解方式少,而类引用注解方式)。 注解 Select()&#xff1a;查询Inse…

Spring事务失效可能是哪些原因

典型回答 Spring中比较容易失效的就是通过Transactional 定义的声明式事务&#xff0c;他在以下几个场景中会导致事务失效&#xff0c;首先&#xff0c;就是Spring的Transactional是基于Spring的AOP机制实现的&#xff0c;而AOP机制又是基于动态代理实现的。那么如果代理失效了…

ArrayList与顺序表(2)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x1…

归并排序精讲

一.定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子…

C++ 虚表起源

本文会让看不见 摸不着的虚表(Vtable),虚指针(Vptr)彻底现行 本文涉及思想: C 面向对象 封装 继承 多态 中的 多态 概念解释: 虚表指针&#xff1a; 这是指向虚表&#xff08;vtable&#xff09;的指针&#xff0c;虚表中包含了该类的所有虚函数对应的地址。 虚表&#x…

外贸客户开发有用的软件

外贸客户开发过程中&#xff0c;选择合适的软件工具能够显著提升效率和效果。以下是一些对外贸客户开发非常有用的软件&#xff1a; CRM系统&#xff1a; Salesforce&#xff1a;全球领先的CRM平台&#xff0c;提供强大的客户关系管理、市场分析、销售自动化等功能&#xff0c;…

vue基础语法学习

Object.defineProperty方法的使用 // 这是一个普通的对象 let phone {} // 给这个phone新增一个属性 三个参数&#xff1a;新增属性的对象&#xff0c;新增啥属性&#xff0c;属性值&#xff0c;key value对 Object.defineProperty(phone,color,{value:太空灰, //设置属性值wr…

联合概率、条件概率、边缘概率、贝叶斯定理

事件 事件是实现的一组结果(一个或多个)。就像"扔硬币时反面是事件"&#xff0c;“从一副纸牌中选择国王(国王中的任何一个)也是事件”, “roll到5是事件等” 独立每个事件均不受其他事件影响。例: 抛硬币两次。第一次扔事件的结果不会影响第二个事件结果 相关(也…

Axure糖尿病健康管理APP原型 (知识科普/病友社区/远程医生会诊/购物商城/血糖监测/饮食监测)

作品概况 页面数量&#xff1a;共 50 页 源文件格式&#xff1a;rp格式&#xff0c;兼容 Axure RP 9/10&#xff0c;非程序软件无源代码 应用领域&#xff1a;医疗健康、慢病管理、糖尿病管理 作品特色 本作品为Axure糖尿病健康管理APP端原型图&#xff0c;设计规范内容清晰…

深度解读《深度探索C++对象模型》之C++虚函数实现分析(一)

目录 成员函数种类 虚函数的实现 单一继承下的虚函数 接下来我将持续更新“深度解读《深度探索C对象模型》”系列&#xff0c;敬请期待&#xff0c;欢迎关注&#xff01;也可以关注公众号&#xff1a;iShare爱分享&#xff0c;或文章末尾扫描二维码&#xff0c;自动获得推文…