C 的get函式,c語言gets 的用法是什麼

2025-06-09 04:56:15 字數 2917 閱讀 1160

1樓:何聲洪

,a);實際上呼叫的是而不是不信的話,侍知你可以把char a=',改成char a=2;(int型別和char型別是等價旦弊的),意思是隻讀2-1個字元,就會只輸出a。為什麼,a);回去呼叫而不是呢?我查了msdn,壓根就沒有這個函式,由於char可以轉換為int,所以呼叫由於『,』的ascall碼為44,模談族就相當於,44);所以會輸出aa,bb(這才6個字元)。

你可以用。

2樓:匿名使用者

, 20, '

這個好使。但是不知道兩個引數的。

c語言gets()的用法是什麼?

3樓:帳號已登出

在前面從鍵盤輸入字串是使用 scanf 和 %s。其實還有更簡單的方法,即使用 gets() 函式。該函式的原型為:

# include

char *gets(char *str);

這個函式很簡單,只有乙個引數。引數型別為 char* 型,即 str 可以是乙個字元指標變數名,也可以是乙個字元陣列名。gets() 函式的功能是從輸入緩衝區中讀取乙個字串儲存到字元指標變數 str 所指向的記憶體空間。

下面將前面中使用 scanf 輸入字串的程式改一下:

# include

int main(void)

char str[20] =0"; 字元陣列初始化\0printf("請輸入字串:")

gets(str);

printf("%s", str);

return 0;

輸出結果是:

請輸入字串:i love you

i love you

在c語言中怎樣使用gets()函式?

4樓:whom莪

gets從標準輸入裝置讀字串函式。可以無限讀取,不會判斷上限,以回車結束讀取,所以程式設計師應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢位。

從stdin流中讀取字串,直至接受到換行符或eof時停止,並將讀取的結果存放在buffer指標所指向的字元陣列中。換行符不作為讀取串的內容,讀取的換行符被轉換為『\0』空字元,並由此來結束字串。

讀入成功,返回與引數buffer相同的指標;讀入過程中遇到eof(end-of-file)或發生錯誤,返回null指標。所以在遇到返回值為null的情況,要用ferror或feof函式檢查是發生錯誤還是遇到eof。

本函式可以無限讀取,不會判斷上限,所以程式設計師應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢位。如果溢位,多出來的字元將被寫入到堆疊中,這就覆蓋了堆疊原先的內容,破壞乙個或多個不相關變數的值。

這個事實導致gets函式只適用於玩具程式,為了避免這種情況,我們可以用fgets(stdin) (fgets實際上可以讀取標準輸入(即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。為了向後相容,gets刪除換行符,gets並不將換行符存入緩衝區。

c語言,gets函式的詳細用法?

5樓:教育仁昌

c語言,gets()函式用來從標準輸入裝置(鍵盤)讀取字串直到換行符結束,但換行符會被丟棄,然後在末尾新增'\0'字元。其呼叫格式為:gets(s)。

其中s為字串變數(字串陣列名或字串指標)。如果為單個字元指標,編譯連線不會有錯誤,但執行後記憶體溢位錯誤。

6樓:網友

是的,如果這是某書上的做法,那麼,我只能說它為你們提供了乙個錯誤的榜樣。

這樣使用gets()已經發生了溢位!這是gets()不檢查資料邊界的bug造成的。

另外,「字串不是總是以'\0'作為串的結束符」,答案是肯定的,不然puts()函式就不能在合適的地方停下來了。這裡st[15]被gets()函式賦值為'\0'。這裡要說明的是st[15],st[16]是存在而不合法的,因為字串實際上就等同於指標,類似st[16]是實在的位址但是是不應該被引用的。

為什麼這裡溢位沒有產生錯誤?可能系統分配記憶體是以乙個最小的大小整段整段的分配(這個我只是猜測)。你可以試著輸入的字串變長一點,就可以看到記憶體讀寫出錯的提示了,這就是溢位的嚴重後果!

我在dos系統下測試字串長了直接當機。

驗證1:st[15]被賦值為'\0'

#include""

main()

驗證2:#include""

main()

同樣的建議:拒絕gets(),這本來就是乙個有bug的函式!

c語言中get的用法

7樓:新科技

物件導向程式設計的乙個規則是:使使用者只需要指定物件能做什麼,而不需要去指定或者瞭解物件是如何完成該的。 下面我就跟你們詳細介紹下c語言中get的用法,希望對你們有用。

c語言中get的用法如下:

通過get和set訪問器來訪問,就保持了這種規則,而且還提供了額外的功能,如對值進行檢查,實現唯讀或只寫屬性等。

總的來說就是可以通過set get 來對類的屬性進行封裝,物件導向的程式是不可以直接用類自己定義的屬性的。

一般物件導向程式語言都要求成員變數不能直接暴露給外部訪問,如下:

public class a

public int age; /這是不好的,待會有程式設計師可能把-1賦給age

為了防止亂賦值,c#設計了乙個屬性機制,要求把成員變數設為私有,在通過屬性來控制成員變數的讀寫,如下:

public class b

private int age; /私有成員變數。

public int age //age的屬性。

get //讀取器。

set他是誰?",,;

c++三種get函式的寫法

8樓:源大俠

最後一行:應該是讀取126個字元。

C語言中gets函式輸入字串,不能放在迴圈中重複輸入

include include int main return 0 scanf輸入後那個回車被gets str 接收了內,所以下次容 遇到gets就不再等待你輸入,可以用getchar 把scanf輸入後的回車接收就好了。我執行過的,給最佳答案哦!每次使用了輸入輸出函式後,可以直接使用 fflush...

c語言 函式的定義的小問題,C語言 函式的定義的小問題

注意這個函式的兩點 第一個引數是char,什麼是char?在32位的機器上,char可以看成1個位元組的整數,a b 這樣的asii字元是char,a選項中的 abc c選項中的 65 都不是char,實際上他們什麼都不是,所以排除ac 第二,返回是void的。那麼b取了函式的返回值,所以b也是錯誤...

c語言if函式式如何實現的,C語言是函數語言程式設計語言嗎

if語句的一般形式如下 if 表示式 語句1 else語句2 if語句中的 表示式 可以是關係表示式 邏輯表示式,甚至是數值表示式。其中最直觀 最容易理解的是關係表示式。所謂關係表示式就是兩個數值進行比較的式子。例如 if x y printf d x else printf d y 擴充套件資料i...