C語言中scanf、gets、fgets的區別
1.scanf會讀取標準輸入緩衝區中的輸入行內容直到遇到回車或空白(回車、tab、空格)以換行為例,會把換行符之前的資料全部讀入到scanf指定的變數中,回車(\n)依然儲存
在緩衝區中,等待下次讀取標準輸入緩衝區
遇到上面這種情況一般需要加入一下程式碼來清空快取區的行
/*
這裡getchar()從緩衝區中讀一個字元,直到讀取到回車結束,由於getchar()沒有設定變數儲存讀取的字元,所以讀取的字元全部被拋棄,這樣就把一行內容全部清空了(回車前面的內容包括回車)
*/
while(getchar() != '\n')
continue;
2.gets只有在遇到回車時才會把緩衝區中的內容全部讀出了,然後去掉回車(\n)把回車前的內容全部寫到變數中
3.fgets使用來處理檔案的,不過可以設定檔案指標是stdin(標準輸入,一般指鍵盤),它在讀取標準輸入時在遇到回車時會直接回車之前包括回車都讀出到指定的變數中
相關推薦
C語言中scanf、gets、fgets的區別
1.scanf會讀取標準輸入緩衝區中的輸入行內容直到遇到回車或空白(回車、tab、空格)以換行為例,會把換行符之前的資料全部讀入到scanf指定的變數中,回車(\n)依然儲存 在緩衝區中,等待下次讀取標準輸入緩衝區 遇到上面這種情況一般需要加入一下程式碼來清空快取區的行
C語言中scanf(),sscanf(),fscanf()的用法和區別
scanf(),sscanf(),fscanf()區別: 第一個是從控制檯(鍵盤)輸入; 第二個是從字串輸入; 第三個是從檔案輸入; scanf scanf()函式根據由format(格式)指定的格式從stdin(標準輸入)讀取,並儲存資料到其它引數. int main
c語言中scanf("%c",&c)吃掉回車或者空格字元的問題
問題來源http://zhidao.baidu.com/question/487898822.html?oldq=1#reply-box-1224608638 #include<stdio.h> void main(){ int a; char b;
解決c語言中scanf("%c",&c)吃掉回車或者空格字元的問題
#include <stdio.h> int main() { int i; char *p;//有十個元素的字元陣列 for(i=0;i<10;i++){ scanf("%c",(p+i)); } for(i=6;i<10;i++)
C語言中scanf函式輸入回車符的問題
在用c語言編寫輸入語句的時候常用到scanf函式,初學者在剛用scanf函式輸入時,經常會遇到各種各樣的輸入錯誤,最重要的是一定要記住scanf函式的輸入格式,scanf函式裡包含了哪些東西,輸入的時候就必須有哪些東西,比如:scanf("%c%c%c"),那麼輸入的時
C語言中scanf與分隔符(空格回車Tab)
眾所周知,C語言中的scanf函式的作用是從標準輸入裝置(通常是鍵盤)讀取輸入值,並存儲到引數列表中指標所指向的記憶體單元。下面從幾個方面說一下一些稍微細節的東西。下面的實驗都在vc6.0中通過。 1、scanf的返回值 scanf通常返回的是成功賦值(從標準輸入裝置
C語言中%d %.2d %2d %02d的區別
1、%d就是普通的輸出了 2、% 2d是將數字按寬度為2,採用右對齊方式輸出,若資料位數不到2位,則左邊補空格。如下: 3、% 02d,和% 2d差不多,只不過左邊補0 4、%.2d從執行效果來看,和
C語言中的strlen與sizeof的區別
sizeof與strlen是有著本質的區別,sizeof是求資料型別所佔的空間大小,而strlen是求字串的長度,字串以/0結尾。區別如下: (1) sizeof是一個C語言中的一個單目運算子,而strlen是一個函式,用來計算字串的長度。 (2)sizeof求的是資
C語言中typedef struct和struct的區別:
typedef struct CLinkList { int data; struct CLinkList *next; }node; 上面的CLinkList是識別符號,node是變數型別(相當於(int,char等))。 這語句實際上完成兩
C語言中 if 和 else if 的區別
c語言 不同 語句 class 我們 想要 main print nbsp 先看代碼:我們本意是對i不同的值有不同的判斷。 #include<stdio.h> int main(void) { int i = 1; if(i ==
C語言中getchar()、gets()和scanf()的特點以及scanf產生的多餘回車符問題
第一件事建議大家少用gets函式。 我遇到的這個問題實在是C語言新手比較容易遇到的一個問題。是關於get()和getchar()這兩個函式的。大家都知道,gets()函式作用
C語言中的I/O函數scanf、getchar、printf和putchar說明
重要 col ace 驗證 enter inpu 個數 是否 交互 scanf()、printf()、getchar()和putchar()這四個函數能夠讓用戶和程序交流,所以被稱為輸入/輸出函數,或簡稱為I/O函數。 這裏先結合緩沖輸入來講講scanf()和getchar
【轉載】在C語言中,double、long、unsigned、int、char類型數據所占字節數
src 有關 指針變量 none nbsp ide iso isp cli 和機器字長及編譯器有關系: 所以,int,long int,short int的寬度都可能隨編譯器而異。但有幾條鐵定的原則(ANSI/ISO制訂的): 1 sizeof(short int)&
C的輸入整理(gets、getchar、scanf的異同)
整理gets、getchar、scanf的異同前,一個很重要的概念是輸入流緩衝區及鍵盤緩衝區。 鍵盤緩衝區就是當你鍵盤鍵入內容時,內容儲存的地方。 而當裡面的內容遇到回車的時候,它們就會被存入輸入流緩衝區。 注意,回車的"\n"也會被存入輸入流緩衝區。 getchar和scanf就是從輸入流
fgets、gets、scanf函式讀入字串比較
首先,說說這個函式的使用方法。程式碼如下: char str[10]; fgets(str, 10, stdin);//stdin表示從輸入流中讀入,也可以是其他檔案指標。 gets(str); scanf("%s", str);其中fgets函式是安全的,gets和sc
年齡與疾病、成績判斷及C語言中if else 的簡單應用
年齡與疾病 描述 某醫院想統計一下某項疾病的獲得與否與年齡是否有關,需要對以前的診斷記錄進行整理。 輸入 共2行,第一行為過往病人的數目n(0 < n <= 100),第二行為每個病人患病時的年齡。 輸出 每個年齡段(分四段:18以下,1
C語言中的auto、 register、extern、static用法
auto、register 兩個是用來修飾變數的, extern、static兩個都變數函式都可以。 一、 auto 定義的變數預設是auto型別的二、register變數 關鍵字regiter請求編譯器儘可能的將變數存在CPU的暫存器中。有以下幾點注
C語言中fstat、stat和lstat 區別
在寫應用程式的時候發現我們經常回去檢測一個檔案的大小,有了大小才能對映這個檔案到記憶體上,方便我們直接操作。 在介紹三者的區別之前,首先介紹的是一個非常重要的結構體型別,名字叫做struct stat
C語言中malloc、calloc、realloc動態記憶體分配的理解
void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t numElements, size_t sizeOfElement); 都在stdlib.h函式庫內 它們的返回值都是請求系
C語言中的const、extern及結構體、聯合體的定義
分析過程: A、 首先,看變數名"next", 並注意到它直接被括號所括住; B.1、所以先把括號裡的東西作為一個整體,得出“next 是一個指向 ...的指標"。 B、 然後考慮括號外面的東西,在星號字首和括號字尾之間做出選擇。 B.2、規則告訴我們優先順序較高的是右邊的函式括號,所以得出”next是一個函