C語言 printf 函數多種輸出格式以及占位輸出

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

一、輸出格式

??在C語言中,printf 函數提供了多種輸出格式,用于控制不同類型數據的輸出方式。

1.整數輸出格式
%d:以十進制形式輸出整數。
%o:以八進制形式輸出整數(無前導0)。
%x 或 %X:以十六進制形式輸出整數(小寫x表示小寫字母,大寫X表示大寫字母)。
%u:以無符號十進制形式輸出整數。
字段寬度和精度:可以在%和格式字符之間插入一個數字來指定字段寬度(即輸出的最小寬度)(默認右對齊如果數值的位數小于指定的字段寬度,那么輸出將在左側用空格填充。(除非使用了負號-,表示左對齊,這時將在右側填充空格)。

2.浮點數輸出格式
%f:以標準的小數形式輸出浮點數。
%e 或 %E:以科學計數法形式輸出浮點數(小寫e表示小寫字母,大寫E表示大寫字母)。
%g 或 %G:自動選擇%f或%e格式中較短的一種輸出,且不輸出無意義的零。
字段寬度和精度:可以通過 %m.nf 的形式來指定輸出的字段寬度 m 和小數點后的位數 n。如果省略 m,則寬度由系統決定;如果省略 n,則默認為6位小數

3.字符輸出格式
%c:輸出一個字符。
字段寬度:可以使用 %mc 的形式來指定輸出的字符寬度。如果字符的ASCII碼值對應的字符寬度小于指定的寬度,則會在左側或右側(取決于是否使用-)填充空格以達到指定的寬度。

4.字符串輸出格式
%s:輸出一個字符串。
字段寬度和精度:可以通過 %ms、%-ms、%m.ns、%-m.ns 的形式來指定輸出的字符串寬度和精度。m指定字段寬度,n指定從字符串左側開始輸出的字符數。如果省略n,則輸出整個字符串。

5.其他
%n:將已打印字符數保存在整型指針所指向的變量中。這通常用于統計printf函數的輸出字符數。
轉義字符:如 \n(換行)\t(制表符) 等,用于在輸出中插入特殊字符。

6.修飾符
l 或 L:用于輸出長整型(long)或長雙精度浮點數(long double)。例如,%ld用于輸出long型整數,%Lf:用于輸出long double型浮點數。
h:用于輸出短整型(short)。例如,%hd用于輸出short型整數。

7.標志
-:左對齊輸出。
+:對于整數,總是輸出符號(正號或負號)。
空格:對于整數,如果為正數,則在其前面加一個空格;如果為負數,則輸出負號。
#:對于o(八進制)和x(十六進制)格式,總是在輸出的數前面加上0或0x/0X前綴。
這些輸出格式和修飾符可以組合使用,以控制 printf 函數的輸出格式。

二、占位輸出

在C語言中,使用printf函數時,可以通過格式說明符來指定輸出的位數。對于整數,可以使用字段寬度和精度說明符來控制輸出的格式。雖然精度通常用于浮點數,但字段寬度對于整數和浮點數都是有用的。對于整數,可以使用%d、%x或%o等來說明符,并在它們前面添加一個數字來指定字段的最小寬度。如果數值的位數小于指定的字段寬度,那么輸出將在左側用空格填充除非使用了負號-,表示左對齊,這時將在右側填充空格)。
整型:

%2d:如果數值的位數小于指定的字段寬度,那么輸出將在左側用空格填充
%02d:如果數值的位數小于指定的字段寬度,那么輸出將在左側用0填充

指定字段寬度(右對齊)

#include <stdio.h>  int main(void) 
{  int num = 255;  printf("Decimal: %5d\n", num);  // 輸出:Decimal:   255(前面有2個空格)  printf("Hexadecimal: %8x\n", num); // 輸出:Hexadecimal:     ff(前面有6個空格) printf("Decimal: %05d\n", num);  // 輸出:Decimal:   255(前面有2個0)  printf("Hexadecimal: %08x\n", num); // 輸出:Hexadecimal:     ff(前面有6個0) return 0;  
}

在這里插入圖片描述
指定字段寬度并左對齊

#include <stdio.h>  int main(void) 
{  int num = 255;  printf("1:右對齊,不足左側補0\n");	printf("Decimal:\n%05d\n", num);  // 輸出:Decimal:   255(前面有2個0)  printf("Hexadecimal:\n%08x\n", num); // 輸出:Hexadecimal:     ff(前面有6個0)printf("2:右對齊,不足左側補空格\n");	printf("Decimal:\n%5d\n", num);  // 輸出:Decimal:   255(前面有2個空格)  printf("Hexadecimal:\n%8x\n", num); // 輸出:Hexadecimal:     ff(前面有6個空格)printf("3:左對齊,不足右側補空格\n");printf("Decimal:\n%-5d\n", num);  // 輸出:Decimal: 255  (后面有2個空格)  printf("Hexadecimal:\n%-8x\n", num); // 輸出:Hexadecimal: ff    (后面有6個空格)  return 0;  
}

在這里插入圖片描述
對于浮點數,可以同時指定字段寬度和精度
精度用于指定小數點后的位數,而字段寬度用于指定整個數字(包括小數點和符號)的最小寬度。

#include <stdio.h>  int main(void) 
{  float pi = 3.14159265;  printf("Pi:%7.2f\n", pi);  // 輸出:Pi:0003.14(整個數字寬度為7,小數點后有2位)右對齊printf("Pi:%07.2f\n", pi);  // 輸出:Pi:   3.14(整個數字寬度為7,小數點后有2位)右對齊printf("Pi:%-7.2f\n", pi);  // 輸出:Pi:3.14   (整個數字寬度為7,小數點后有2位)左對齊return 0;  
}

在這里插入圖片描述
使用 * 作為字段寬度或精度的占位符
使用 * 作為字段寬度或精度的占位符,并在 printf 的參數列表中提供一個整數來指定實際的寬度或精度。允許在運行時動態地設置這些值。

#include <stdio.h>  int main(void) 
{  int num = 255;  int width = 8; printf("Decimal:%0*d\n", width, num); // 輸出:Decimal:     255(前面有5個0)printf("Decimal:%*d\n", width, num); // 輸出:Decimal:     255(前面有5個空格)printf("Hexadecimal:%0*x\n", width, num); // 輸出:Hexadecimal:     ff(前面有6個0) printf("Hexadecimal:%*x\n", width, num); // 輸出:Hexadecimal:     ff(前面有6個空格) printf("Decimal:%-*d\n", width, num); // 輸出:Decimal:     255(后面5個空格)printf("Hexadecimal:%-*x\n", width, num); // 輸出:Hexadecimal:     ff(后面有6個空格)   return 0;  
}
//在這個例子中,%*x 中的 * 表示字段寬度將從參數列表中獲取,即width變量的值。

在這里插入圖片描述

其它,分配一個足夠大的字符串并打印字符串格式內容

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>char *make_message(const char *fmt, ...)
{int size = 0;char *p = NULL;va_list ap;/* Determine required size */va_start(ap, fmt);size = vsnprintf(p, size, fmt, ap);va_end(ap);if (size < 0)return NULL;size++;             /* For '\0' */p = malloc(size);if (p == NULL)return NULL;va_start(ap, fmt);size = vsnprintf(p, size, fmt, ap);va_end(ap);if (size < 0) {free(p);return NULL;}return p;
}int main(int argc,char *argv[]) 
{ char *p=make_message(argv[1]);if(p !=NULL){printf("%d\n%*s\n",(int)strlen(p),(int)strlen(p),p);}return 0;  
}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43157.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43157.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43157.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript里方括號[]的使用

我們知道可用方括號來表示數組或者JSON對象的屬性值&#xff0c;其實在特定場合&#xff0c;方括號還有妙用的。 比如我有數據源是一組JSON&#xff0c;其中有一個屬性是時間字符串&#xff0c;我想對時間的小時、星期、日、月分別進行處理。每條JSON都各自生成一條新的JSON&am…

代碼隨想三刷動態規劃篇9

代碼隨想三刷動態規劃篇9 714. 買賣股票的最佳時機含手續費題目代碼 714. 買賣股票的最佳時機含手續費 題目 鏈接 代碼 class Solution {public int maxProfit(int[] prices, int fee) {//賣的時候-feeif(prices.length1){return 0;}int[][] dp new int[prices.length][2]…

EAI四個層次服務-系統架構師(二十六)

1、&#xff08;重點&#xff09;系統應用集成提供了4個不同層次服務&#xff0c;最上層服務是&#xff08;&#xff09;服務。 解析: EAI&#xff08;Enterprise Application Integration&#xff09;系統應用集成&#xff0c;相關概念。 實施EAI必須保證&#xff1a;應用程…

星間鏈路與星地鏈路

目錄 一、星間鏈路 1.1 層內星間鏈路&#xff08;Intra-layer ISLs&#xff09; 1.2 層間星間鏈路&#xff08;Inter-layer ISLs&#xff09; 1.3 實現方式 1.3.1 微波鏈路 1.3.2 激光鏈路 二、星地鏈路 2.1 星地鏈路的關鍵特性 2.1.2 Ka信關站 2.1.2 Q/V信關站 2.1…

JavaScript中,正則表達式所涉及的api,解析、實例和總結

JS中正則的api包括以下&#xff1a; String#searchString#splitString#matchString#replaceRegExp#testRegExp#exec 1. String#search 查找輸入串中第一個匹配正則的index&#xff0c;如果沒有匹配的則返回-1。g修飾符對結果無影響 var string "abbbcbc"; var r…

react根據后端返回數據動態添加路由

以下代碼都為部分核心代碼 一.根據不同的登錄用戶&#xff0c;返回不同的權限列表 &#xff0c;以下是三種不同用戶限權列表 const pression { //超級管理員BigAdmin: [{key: "screen",icon: "FileOutlined",label: "數據圖表",},{key: "…

谷粒商城學習筆記-使用renren-fast-vue框架時安裝依賴包遇到的問題及解決策略

文章目錄 1&#xff0c;npm error Class extends value undefined is not a constuctor or null2&#xff0c;npm warn cli npm v10.8.1 does not support Node.js v16.20.2.3&#xff0c;npm error code CERT_HAS_EXPIRED學習心得 這篇文章記錄下使用renren-fast-vue&#xff…

QT學習(6)——QT中的定時器事件,兩種實現方式;事件的分發event,事件過濾器

目錄 引出定時器事件QTimerEventQTimer 事件的分發事件過濾器 總結QT中的鼠標事件定義QLable的鼠標進入離開事件提升為myLabel重寫QLabel的函數鼠標的事件鼠標的左中右鍵枚舉鼠標多事件獲取和鼠標移動鼠標追蹤 QT中的信號和槽自定義信號和槽1.自定義信號2.自定義槽3.建立連接4.…

C++ 類和對象 拷貝構造函數

一 拷貝構造函數的概念&#xff1a; 拷貝構造函數是一種特殊的構造函數&#xff0c;用于創建一個對象是另一個對象的副本。當需要用一個已存在的對象來初始化一個新對象時&#xff0c;或者將對象傳遞給函數或從函數返回對象時&#xff0c;會調用拷貝構造函數。 二 拷貝構造函…

打卡第6天----哈希表

每天進步一點點,滴水石穿,日積月累,不斷提升。 數組和鏈表章節告一段落。開啟哈希表相關的。 哈希表能解決什么問題呢,一般哈希表都是用來快速判斷一個元素是否出現集合里 一、有效的字母異位詞 leetcode題目編號:242 題目描述: 給定兩個字符串 s 和 t ,編寫一個函數…

安裝和配置 MSYS2

MSYS2&#xff08;Minimal SYStem 2&#xff09;是一個為Windows平臺提供的輕量級Linux類系統&#xff0c;它集成了大量的GNU工具鏈、工具和庫&#xff0c;為開發者提供了一個類似于Linux的shell環境和完整的開發環境。以下是關于MSYS2的詳細介紹&#xff1a; 一、定義與特點 …

深入理解Java中的泛型編程

深入理解Java中的泛型編程 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. 泛型的基礎概念 在Java中&#xff0c;泛型編程是一種強大的編程范式&#xff0c;它允許我們編寫可以操作各種類型的代…

vagrant遠程連接不上問題

如果使用的是vbox虛擬機的host_only的默認ip為56.1開頭如果使用這個1作為地址&#xff0c;只能使用轉發的形式連接&#xff0c;宿主機使用ssh -p 22222 name127.0.0.1 連接&#xff0c;如果配置的主機位大于1則可以使用虛擬機的ip地址連接。 1使用網絡地址轉換&#xff08;ant…

Linux忘記密碼重置root密碼、重置普通用戶密碼

重啟看到選項按e reboot 或 init 62、移動到Linux開頭的行在末尾添加 rw init/bin/bash3、按下Ctrlx引導啟動 mount -o remount,rw /輸入命令回車更改密碼,輸入新密碼&#xff0c;別用小鍵盤&#xff0c;容易出錯 passwd輸入兩次校驗&#xff0c;出現updated successfully就…

OceanBase 配置項系統變量實現及應用詳解(1):配置項的定義及使用方法

《OceanBase 配置項&系統變量實現及應用詳解》專題導讀 在使用OceanBase的過程中&#xff0c;看到大家經常會遇到“參數”、“配置項”、“系統變量”等概念&#xff0c;卻不太清楚它們是不是同一個東西&#xff0c;以及應該如何使用。一些對數據庫開發感興趣的朋友&#…

開源大模型對比

隨著chatgpt誕生&#xff0c;開源大模型的也獲得了突飛猛進的進展&#xff0c;值得關注的是國內本地私有大模型已經在很多真實的場景中落地&#xff0c;比如智能客服。美國的技術研發能力遙遙領先&#xff0c;但是不得不說落地應用這塊是我們的強項。企業使用大模型一般需要考慮…

【面向就業的Linux基礎】從入門到熟練,探索Linux的秘密(九)-git(1)

Git是一個版本管理控制系統&#xff08;縮寫VCS&#xff09;&#xff0c;它可以在任何時間點&#xff0c;將文檔的狀態作為更新記錄保存起來&#xff0c;也可以在任何時間點&#xff0c;將更新記錄恢復回來。 文章目錄 前言 一、git是什么 二、git基本概念 三、git基本命令 總結…

電商項目中分與元金額單位互轉實戰

在Java開發中&#xff0c;可能遇到金額單位的轉換&#xff0c;比如本系統用分作為金額的基本單位&#xff0c;對方系統用元作為金額的基本單位&#xff0c;這就需要進行單位轉換&#xff0c;記錄下來&#xff0c;方便備查。 一、分轉元 分轉元&#xff0c;分到元相差兩位&…

PHP源碼:新聞門戶系統(附管理后臺+前臺)

一. 前言 今天小編給大家帶來了一款可學習&#xff0c;可商用的&#xff0c;新聞門戶系統 源碼&#xff0c;支持二開&#xff0c;無加密。項目可以擴展為個人博客&#xff0c;和一些社交論壇網址。主要功能&#xff1a;支持文章管理&#xff0c;評論管理&#xff0c;分類管理等…

Kotlin linkedMapOf filterKeys

Kotlin linkedMapOf filterKeys fun main(args: Array<String>) {val lhm linkedMapOf<String, Any>(Pair("name", "phil"), //因為key相同都為 name&#xff0c;被后面的覆蓋。Pair("year", 2024),Pair("name", "f…