關於scanf和gets函式

2021-09-13 01:40:23 字數 951 閱讀 5018

首先,我描述一下我遇到的問題。

先輸入乙個整數,回車,然後迴圈n次gets(string)字串。

輸出的結果,第乙個是空,從第二項開始有值。

這是為什麼呢?

int n,cnt=0;

cin>>n;

vectorv(1000);

while(cnt本道題用gets()的好處在於,可以直接讀取一整行,空格也可以讀進去。

如果用cin或者scanf()讀取的話,遇到空格和回車符都會停止。

所以此處問題的原因在於gets()函式,遇到回車就會終止讀取,所以第一次gets字串的時候將整數後面的回車讀進去了,相當於第乙個字串沒有儲存上值並且直接終止讀取。

解決辦法就是,可以用getchar()來接受回車符。

如下面的例子:

n(case個數)

日期 分數

cout:

按照分數從大到小排序;分數相同按照日期從小到大排序

42017/9/28 98

2019/9/12 98

2018/8/12 89

*/#include#include#include#include#includeusing namespace std;

struct student;

bool cmp(student a,student b)

sort(v.begin(),v.end(),cmp);

for(int i=0;i

return 0;

}

scanf和gets函式的區別

scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hi hello 則應該使用 gets 函式。gets可以接收空格 而scanf遇到空格 回車和tab鍵都會認為輸入結束,所有它不能接收空格。char string 15 gets string 遇到回車認為輸...

gets和scanf函式的區別

scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hi hello 則應該使用 gets 函式。gets可以接收空格 而scanf遇到空格 回車和tab鍵都會認為輸入結束,所有它不能接收空格。char string 15 gets string 遇到回車認為輸...

關於scanf與gets的區別

scanf與gets讀取字串 scanf與gets函式讀取字串的區別 前兩天有個同學問我scanf與gets的區別說了半天也沒說出來個所以然,就搜了一下,scanf 和gets的區別大致有著幾條 1.scanf 會忽略行開頭的所有空格,並以空格 換行符結束輸入 使用getchar 讀取scanf語句...