首页
/
每日頭條
/
科技
/
c語言stdio.h包括什麼
c語言stdio.h包括什麼
更新时间:2024-04-29 01:55:02

c語言stdio.h包括什麼(C語言頭文件stdio.h)1

stdio.h 幾乎可以說是每一個 C 語言源代碼中都要引用的一個文件,其中定義了許多常用的函數,如輸入輸出函數、文件相關的函數等。

下面介紹 stdio.h 中定義的基本輸入輸出函數。

1. 格式化輸入輸出

第一個出場的是用得最多的一對輸入輸出函數。

咱就來看一下這兩個函數在 stdio.h 文件中是如何定義的?

// 輸入函數 int scanf(const char* __format, ...); // 輸出函數 int printf(const char* __format, ...);

這兩個函數定義的參數都有兩個,第一個是字符指針常量,其實也就是字符串,是兩個函數都必須要具備的參數。

後面的三個點,名為可變參數。不限制參數個數(0個及以上)、參數類型。

#include<stdio.h> int main() { int a; scanf("%d", &a); return 0; }

在 scanf 函數的字符串裡,可以是格式字符、普通字符、空白字符,而轉義字符在其中會失去它的轉義功能,成為一個普通字符。

當字符串中每有一個格式符号,相應後面的可變參數列表中就要有一個變量,一一對應。如果不附上變量,就會産生報錯。

變量如果是基本數據類型的,如整型、浮點型、字符型的,則要在變量前面加上一個尋址運算符(&),才能将數據傳遞給相應的變量。

同時需要注意的是,scanf 函數的可變參數列表隻能傳入變量,而不是能是常量、表達式等。

#include<stdio.h> int main() { int a=3; printf("輸出數字:%d\n", a); return 0; }

printf 函數中,字符串中可以是任意字符,另外轉義符号(如 \n、\t 等)不會被轉換為普通字符。

和 scanf 函數不同的是,該函數的可變參數列表沒有強制要求有多少個格式符号,就要填寫變量,編譯是不會發生錯誤,也會正常運行。

不過不建議這麼做,因為沒有意義,其次運行後編譯器會随機安排一個垃圾值,獲得預期外的結果。

且 printf 函數的可變參數列既可以是變量,也可以是常數、表達式。

2. 單字符輸入輸出

第二組輸入輸出函數,getchar 和 putchar。

// getchar int getchar(void); // putchat int putchar(int char);

getchar 函數是沒有參數的。每一次隻能接受一個字符,即是輸入一連串的字符,也隻會接收第一個字符,而且字符必須還是 ASCII 碼表上的字符。如果輸入的是一個漢字,那麼是不會被接收的。

putchar 函數是有參數的,傳入的參數隻能是整數類型或者字符類型。其中整數隻有在 0-255 之間才能輸出字符,其他的是無法在屏幕上顯示結果。

#include<stdio.h> int main() { char c = getchar(); putchar(c); return 0; }

輸入輸出:

c語言stdio.h包括什麼(C語言頭文件stdio.h)2

3. 字符串輸入輸出

顧名思義,這一組函數用于字符串的輸入和輸出。

// gets char* gets(char *); // puts int puts(const char *);

gets 函數有一個參數,可以是字符指針變量或者字符數組變量。

puts 函數也有一個參數,可以是字符指針變量、字符數組,也可以是字符指針常量。

當傳給 gets 函數是一個字符指針的時候,需要對其進行初始化。

#include<stdio.h> int main() { char str[10]="\0"; char *string = str; gets(string); puts(string); return 0; }

輸入輸出:

c語言stdio.h包括什麼(C語言頭文件stdio.h)3

但需要注意的是,輸入的字符不能大于定義的數組長度,否則就會造成内存溢出,産生異常。

c語言stdio.h包括什麼(C語言頭文件stdio.h)4

4. 附錄

格式字符:

c語言stdio.h包括什麼(C語言頭文件stdio.h)5

轉義字符:

c語言stdio.h包括什麼(C語言頭文件stdio.h)6

總結

關于 C 語言常用的輸入輸出函數就介紹到這結束了。如果本篇文章對您有所幫助,點個贊支持一下。

如有發現文中有錯誤或者不恰當的地方,歡迎在評論區留言讨論。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
零基礎怎麼系統學習大數據(零基礎怎麼系統學習大數據)
零基礎怎麼系統學習大數據(零基礎怎麼系統學習大數據)
  大數據技術是指從各種各樣類型的巨量數據中,快速獲得有價值信息的技術。解決大數據問題的核心是大數據技術。零基礎怎麼系統學習大數據?首先我們先了解一下什麼是大數據。      "大數據"是一個體量特别大,數據類别特别大的數據集,并且這樣的數據集無法用傳統數據庫工具對其内容進行抓取、管理和處理。大數據工程師需要學習哪些知識?   一、從入門到進階,大緻羅列了8...
2024-04-29
怎樣加快windows10上網功能(如何在Windows10系統中最大限度的提高Internet連接速度)
怎樣加快windows10上網功能(如何在Windows10系統中最大限度的提高Internet連接速度)
  本期Eleght科技給大家分享一下如何在Windows10系統中最大限度的提高Internet連接速度,我們在日常生活中比如下載一些大文件,比如小E我經常動辄幾百GB文件需要網絡傳輸,這裡面也有一定的硬盤穩定因素,這時候我們除去從運營商本身的網絡帶寬,剩下的銀影響因素隻剩下我們的電腦系統了,那麼我們如何在Windows10系統中最大化的利用我們網速節約我...
2024-04-29
小學奧數和編程(編程從娃娃抓起)
小學奧數和編程(編程從娃娃抓起)
  來源:新華每日電訊      河北省承德市營子區濱河路小學将機器人編程課引入學校,面向全校學生開設自主選修科技課,安排專業教師指導學生進行機器人編程、機器人設計等學習。新華社記者 劉環宇 攝   少兒編程火了,打開手機鋪天蓋地的廣告,線上、線下編程課花樣繁多,融資成功的喜報頻頻傳來,各級教育機構明确“大力推廣”……很多人擔憂,編程是否會代替奧數,成為義務...
2024-04-29
高校如何提高科技成果轉化(福建高校着力打通科技成果轉化為生産力的)
高校如何提高科技成果轉化(福建高校着力打通科技成果轉化為生産力的)
  來源:台海網産學研融合 促發展超越——高校科技創新及成果轉化系列報道·開欄的話,現在小編就來說說關于高校如何提高科技成果轉化?下面内容希望能幫助到你,我們來一起看看吧!   高校如何提高科技成果轉化   來源:台海網   産學研融合 促發展超越——高校科技創新及成果轉化系列報道·開欄的話   高校,是創新第一動力和人才第一資源的結合點,在國家科技創新體系...
2024-04-29
手機自學編程從哪學起呢(一部手機學編程)
手機自學編程從哪學起呢(一部手機學編程)
  平時看手機太沒意思了,浪費時間。還不如利用手機學習點東西……每天刷手機就像在浪費生命……沒有一點回報……看我能用多久掌握一門編程語言。   決定先學習python……走起!有興趣的一起學起來!   1.手機一部安卓蘋果都可。   2.軟件準備:蘋果:python3ide 或者 carnets-jupter         初學後者比較好用,自帶pytho...
2024-04-29
Copyright 2023-2024 - www.tftnews.com All Rights Reserved