C語言格式化輸入輸出總結 (printf和scanf)

一、printf格式化輸出

1. 整數格式化 (%d, %i, %u, %o, %x)

c復制代碼

int num = 42;
// 以下為不同格式輸出示例
printf("%d", num);      // 42 (十進制)
printf("%i", num);      // 42 (同%d)
printf("%u", num);      // 42 (無符號十進制)
printf("%o", num);      // 52 (八進制)
printf("%x", num);      // 2a (小寫十六進制)
printf("%X", num);      // 2A (大寫十六進制)
printf("%#x", num);     // 0x2a (帶前綴)
printf("%05d", num);    // 00042 (補零)
printf("%-5d", num);    // "42   " (左對齊)
printf("%+d", num);     // +42 (顯示符號)

2. 浮點數格式化 (%f, %e, %g)

c復制代碼

double f = 3.1415926;
// 不同格式的浮點數輸出示例
printf("%f", f);        // 3.141593 (默認6位)
printf("%.2f", f);      // 3.14 (保留2位)
printf("%8.3f", f);     // "   3.142" (總寬8)
printf("%e", f);        // 3.141593e+00 (科學計數)
printf("%.2E", f);      // 3.14E+00
printf("%g", f);        // 3.14159 (自動選擇)
printf("%.3g", f);      // 3.14 (最多3位有效數字)

3. 字符和字符串

c復制代碼

char c = 'A';
char s[] = "Hello";
// 字符與字符串輸出示例
printf("%c", c);        // A
printf("%5c", c);       // "    A"
printf("%s", s);        // Hello
printf("%.3s", s);      // Hel (截斷)
printf("%10s", s);      // "     Hello"
printf("%-10s", s);     // "Hello     "

二、scanf格式化輸入

1. 基本輸入格式

c復制代碼

int a;
float b;
char c;
char str[20];// 基本類型輸入示例
scanf("%d", &a);        // 讀取整數
scanf("%f", &b);        // 讀取浮點數
scanf("%c", &c);        // 讀取單個字符
scanf("%s", str);       // 讀取字符串(無空格)

2. 控制輸入寬度

c復制代碼

// 控制輸入寬度示例
scanf("%5d", &a);       // 最多讀取5位數字
scanf("%4f", &b);       // 最多讀取4位浮點數
scanf("%10s", str);     // 最多讀取10個字符

3. 跳過特定輸入

c復制代碼

int day, month, year;
// 跳過特定輸入示例
scanf("%d/%d/%d", &day, &month, &year); // 輸入12/05/2023
scanf("%d - %d - %d", &day, &month, &year); // 輸入12 - 05 - 2023
scanf("%*s %d", &a);    // 跳過第一個字符串,讀取第二個數字

4. 掃描集

c復制代碼

char name[50];
// 掃描集示例
scanf("%[A - Za - z]", name);   // 只讀取字母
scanf("%[^\n]", str);       // 讀取整行(包括空格)

三、特殊格式控制

1. printf特殊格式

c復制代碼

// printf特殊格式示例
printf("%p", &num);     // 輸出指針地址
printf("%%");           // 輸出%字符
printf("%*d", 5, 10);   // 寬度動態指定(5)

2. scanf特殊格式

c復制代碼

int h, m, s;
// scanf特殊格式示例
scanf("%d:%d:%d", &h, &m, &s);  // 輸入12:30:45
scanf("%[0 - 9]", str);           // 只讀取數字
scanf("%*[ \t\n]%c", &c);       // 跳過空白字符

四、綜合示例

1. printf示例

c復制代碼

#include <stdio.h>
int main() {int id = 123;float score = 89.567;char grade = 'A';// 格式化輸出示例printf("學號:%05d 成績:%6.2f 等級:%c\n", id, score, grade);// 輸出: 學號:00123 成績: 89.57 等級:Areturn 0;
}

2. scanf示例

c復制代碼

#include <stdio.h>
int main() {int year;char model[20];float price;printf("輸入汽車信息(年份 型號 價格): ");scanf("%d %19s %f", &year, model, &price);// 格式化輸出讀取的信息printf("%d年款 %s 售價: %.2f萬元\n", year, model, price);return 0;
}

五、格式說明符對比

說明符printf用途scanf用途
%d輸出有符號十進制整數讀取有符號十進制整數
%i同%d可讀取十進制/八進制/十六進制
%u輸出無符號十進制整數讀取無符號十進制整數
%o輸出八進制讀取八進制
%x/%X輸出十六進制讀取十六進制
%f輸出浮點數讀取float
lf同%f (double)讀取double
%e/%E科學計數法輸出同%f
%g/%G自動選擇%f或%e同%f
%c輸出字符讀取字符
%s輸出字符串讀取字符串(無空格)
%p輸出指針地址
%[]掃描字符集合
%%輸出%字符

六、注意事項

1. printf和scanf參數區別

  • printf傳遞變量值。
  • scanf傳遞變量地址(&)。

2. 緩沖區問題

c復制代碼

int a; char c;
scanf("%d", &a);    // 輸入后按回車
scanf("%c", &c);    // 會讀取之前輸入的回車
// 解決方法: scanf(" %c", &c); (添加空格)

3. 安全性

  • 使用scanf讀取字符串時務必指定寬度:

c復制代碼

char str[10];
scanf("%9s", str);  // 防止緩沖區溢出

4. 返回值

  • scanf返回成功讀取的項目數。

c復制代碼

if(scanf("%d %f", &a, &b)!= 2) {printf("輸入錯誤!");
}

掌握這些格式化輸入輸出方法可以讓你在C語言中更靈活地處理各種數據輸入輸出需求。

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

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

相關文章

哈夫曼編碼和哈夫曼樹

哈夫曼編碼&#xff08;Huffman Coding&#xff09; 是一種基于字符出現頻率的無損數據壓縮算法&#xff0c;通過構建哈夫曼樹&#xff08;Huffman Tree&#xff09; 來生成最優前綴編碼&#xff0c;使得高頻字符用短編碼&#xff0c;低頻字符用長編碼&#xff0c;從而實現高效…

Jetson Orin NX 部署YOLOv12筆記

步驟一.創建虛擬環境 conda create -n yolov12 python3.8.20 注意&#xff1a;YOLOv12/YOLOv11/YOLOv10/YOLOv9/YOLOv8/YOLOv7a/YOLOv5 環境通用 步驟二.激活虛擬環境 conda activate yolov12 #激活環境 步驟三.查詢Jetpack出廠版本 Jetson系列平臺各型號支持的最高Jetp…

Linux指令篇 (2)

指令篇&#xff08;2&#xff09; Linux基本指令&#xff08;2&#xff09;(1) mkdir指令&#xff08;重要&#xff09;&#xff08;2&#xff09;rmdir指令&&rm指令(重要)&#xff08;3&#xff09;man指令(重要)&#xff08;4&#xff09;cp指令&#xff08;重要&…

致遠OA——自定義開發rest接口

文章目錄 :apple: 業務流程 &#x1f34e; 業務流程 代碼案例&#xff1a; https://pan.quark.cn/s/57fa808c823f 官方文檔&#xff1a; https://open.seeyoncloud.com/seeyonapi/781/https://open.seeyoncloud.com/v5devCTP/39/783.html 登錄系統 —— 后臺管理 —— 切換系…

區塊鏈如何成為智能城市的底層引擎?從數據透明到自動化治理

區塊鏈如何成為智能城市的底層引擎&#xff1f;從數據透明到自動化治理 引言&#xff1a;智能城市真的智能嗎&#xff1f; 在數字化時代&#xff0c;智能城市&#xff08;Smart City&#xff09;逐步成為各國推動城市創新的重要方向。城市管理者希望借助物聯網&#xff08;IoT…

洛谷P1177【模板】排序:十種排序算法全解(1)

扯談 之前我已經把十大排序算法全講了一遍&#xff08;具體詳見專欄C排序算法&#xff09;,今天我們來用一道簡單的題目總結實戰一下。 算法實現 一、桶排序&#xff08;Bucket Sort&#xff09; ?適用場景?&#xff1a;數據范圍已知且較小&#xff08;需根據測試數據調整…

SuperMap iClient3D for WebGL 如何加載WMTS服務

在 SuperMap iClient3D for WebGL 中加載WMTS服務時&#xff0c;參數配置很關鍵&#xff01;下面我們詳細介紹如何正確填寫參數&#xff0c;確保影像服務完美加載。 一、數據制作 對于上述視頻中的地圖制作&#xff0c;此處不做講述&#xff0c;如有需要可訪問&#xff1a;Onl…

再讀bert(Bidirectional Encoder Representations from Transformers)

再讀 BERT&#xff0c;仿佛在數字叢林中邂逅一位古老而智慧的先知。初次相見時&#xff0c;驚嘆于它以 Transformer 架構為羅盤&#xff0c;在預訓練與微調的星河中精準導航&#xff0c;打破 NLP 領域長久以來的迷霧。而如今&#xff0c;書頁間躍動的不再僅是 Attention 機制精…

從零開始 保姆級教程 Ubuntu20.04系統安裝MySQL8、服務器配置MySQL主從復制、本地navicat遠程連接服務器數據庫

從零開始&#xff1a;Ubuntu 20.04 系統安裝 MySQL 8、服務器配置 MySQL 主從復制、本地 Navicat 遠程連接服務器數據庫 初始化服務器1. 更新本地軟件包列表2. 安裝 MySQL 服務器3. 查看 MySQL 安裝版本4. 登錄 MySQL 管理終端5. 設置 root 用戶密碼&#xff08;推薦使用 nativ…

java怎么完善注冊,如果郵箱中途更換,能否判斷

解析在下面 附贈代碼 private static class CodeInfo {String code;long timestamp;CodeInfo(String code, long timestamp) {this.code code;this.timestamp timestamp;}}// 存儲驗證碼&#xff08;郵箱 -> 驗證碼信息&#xff09;(保證線程安全) 以免中途更改郵箱pri…

n8n 中文系列教程_01. 簡單易懂的現代AI魔法,n8n的快速了解與概念科普(文末有彩蛋)

1. 教程簡介 歡迎來到“無代碼工具探索”課程&#xff0c;這是專為非技術人員設計的指南&#xff08;當然&#xff0c;技術人員也可以從中受益&#xff09;。我們的目標是通過無代碼工具來提升工作效率&#xff0c;尤其是利用像 n8n 這樣的靈活數據庫平臺。這些工具被譽為“現…

解碼 Web Service:從技術原理到應用場景的深度剖析

Web Service 是一種基于網絡的、分布式的計算技術&#xff0c;它允許不同的應用程序之間通過網絡進行通信和交互。以下是關于 Web Service 的詳細介紹&#xff1a; 一、定義與概念 Web Service 是一種可以通過 Web 協議&#xff08;如 HTTP&#xff09;進行訪問的軟件組件&am…

Nacos啟動報錯

Nacos啟動是在單機模式下&#xff0c;不是集群模式 點擊startup.cmd啟動會報錯 打開bin目錄 rem是注釋的意思&#xff0c;在nacos1.3.2之后&#xff0c;nacos默認的都是集群模式&#xff0c;我們這里單機測試就是用單機模式。 也可以修改MODE&#xff0c;如果選擇不修改&…

uniapp-商城-26-vuex 使用流程

為了能在所有的頁面都實現狀態管理&#xff0c;我們按照前面講的頁面進行狀態獲取&#xff0c;然后再進行頁面設置和布局&#xff0c;那就是重復工作&#xff0c;vuex 就會解決這樣的問題&#xff0c;如同類、高度提煉的接口來幫助我們實現這些重復工作的管理。避免一直在造一樣…

Git 命令速查手冊

聽說用美圖可以釣讀者&#xff1f; 一、基礎操作核心命令 1. 倉庫初始化與克隆 命令作用示例git init創建新倉庫git init my-projectgit clone克隆遠程倉庫git clone [https://github.com/user/repo.git](https://github.com/user/repo.git)git remote add關聯遠程倉庫git re…

信息量、香農熵、交叉熵、KL散度總結

信息量 對于一個事件而言&#xff0c;它一般具有三個特征&#xff1a; 小概率事件往往具有較大的信息量 大概率事件往往具有較小的信息量 獨立事件的信息量相互可以相加 比如我們在買彩票這個事件中&#xff0c;彩票未中獎的概率往往很高&#xff0c;對我們而言一點也不稀…

使用C語言的cJSON中給JSON字符串添加轉義

在 cJSON 庫中&#xff0c;沒有直接提供 一個函數來專門給 JSON 字符串添加轉義&#xff08;如將 " 轉義為 \"&#xff0c;\n 轉義為 \\n 等&#xff09;。 但 cJSON 在 序列化&#xff08;cJSON_Print 或 cJSON_PrintUnformatted&#xff09; 時會自動處理轉義字符…

宇樹機器狗go2—slam建圖(1)點云格式

0.前言 上一篇番外文章教大家如何在宇樹機器狗go2的gazebo仿真環境中實現簡單的導航運動&#xff0c;本期文章會教大家如何讓宇樹的機器狗go2在仿真環境中進行slam建圖時經常會遇到的一些點云格式&#xff0c;在后續的slam建圖和slam算法解析的時候會經常與這些點云信息打交道…

linux socket編程之udp(實現客戶端和服務端消息的發送和接收)

目錄 一.創建socket套接字(服務器端) 二.bind將prot與端口號進行綁定(服務器端) 2.1填充sockaddr_in結構 2.2bind綁定端口 三.直接通信(服務器端) 3.1接收客戶端發送的消息 3.2給客戶端發送消息 四.客戶端通信 4.1創建socket套接字 4.2客戶端bind問題 4.3直接通信即可…

第1期:Python基礎語法入門

1.1 Python簡介 Python是一種解釋型、面向對象、動態數據類型的高級編程語言。它設計簡潔&#xff0c;易于學習&#xff0c;適合初學者。Python廣泛應用于數據科學、人工智能、Web開發、自動化腳本等領域。它的語法簡潔易懂&#xff0c;強調代碼的可讀性。 1.2 安裝Python與配…