在 C 中打印字符串 - 如何在 C 中打印字符串
connygpt 2024-10-10 05:17 10 浏览
打印字符串是编程中的一项基本操作。它帮助您输出信息,检查和调试您的代码,并向用户显示提示信息。
在本文中,您将学习在 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)
相关推荐
- 3分钟让你的项目支持AI问答模块,完全开源!
-
hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...
- 干货|程序员的副业挂,12个平台分享
-
1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...
- Github标星超200K,这10个可视化面板你知道几个
-
在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...
- 开箱即用的炫酷中后台前端开源框架第二篇
-
#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...
- 搭建React+AntDeign的开发环境和框架
-
搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...
- 基于.NET 5实现的开源通用权限管理平台
-
??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...
- StreamPark - 大数据流计算引擎
-
使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...
- 教你使用UmiJS框架开发React
-
1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...
- 简单在线流程图工具在用例设计中的运用
-
敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...
- 【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单
-
这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...
- 聊聊规则引擎的调研及实现全过程
-
摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...
- 【开源推荐】Diboot 2.0.5 发布,自动化开发助理
-
一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...
- 微软推出Copilot Actions,使用人工智能自动执行重复性任务
-
IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...
- Electron 使用Selenium和WebDriver
-
本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...
- Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具
-
一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)