青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

使用scanf需要注意的問題

Posted on 2010-12-31 17:13 S.l.e!ep.¢% 閱讀(3488) 評論(0)  編輯 收藏 引用 所屬分類: C++

關于scanf的一些轉載

轉載自:http://blog.chinaunix.net/u3/99423/showart_2100968.html

scanf函數我曾經在 這個函數上犯過不少錯誤,也看到別人犯過的錯誤,記下來,提醒自己不要重蹈覆轍了。如果對你有用,那就更好了:)如果你發現文章中有錯誤,歡迎你不吝賜 教。希望和大家一起學習!(我的郵箱:moongbingbing@gmail.com????blog: http://blog.csdn.net/wayne92????? ?溫銘 )有關詳細的scanf函數解釋,大家可以去看看《C程序設計語言》(K&C)和《C語言大全》(后面我把其中scanf的部 分貼了出來)。


曾經錯的幾個地方:(xpsp2,vc6.0環境下)
1.空白符問題
#include<stdio.h>
main()
{??
?int a;
?printf("input the data\n");
?scanf("%d\n",&a);// 這里多了一個回車符\n
?? printf("%d",a);
?return 0;
}
結果要輸入兩個數程序才結束,而不 是預期的一個。why?
原因:用空白符結尾時,scanf會跳過空白符去讀下一個字符,所以你必須再輸入一個 數。這里的空白符包括空格,制表符,換行符,回車符和換頁符。所以如果你用scanf("%d? ",&a)也會出現同樣的問題。
解 決方法:這種錯誤大多是輸入的時候不小心,多注意一點就好了。這種問題也不好檢查,編譯沒有問題,一個空格也不容易看出來。當你的程序 出現上面的問題時,自己對照檢查一下就可以了。


2.緩沖區問題
這是一個非常容易錯的地方,我就錯過多次。
#include <stdio.h>
main()
{
?int n = 5;
?char c[n];
?for(int i = 0; i < n; i++)
??c[i] = scanf("%c",&c[i]);
?printf(c);
return 0;
}
如果輸入:
a
b
c
那么循環就會“提前”結束了.
原因: 輸入a和第一個回車后,a和這個回車符都留在緩沖區中。第一個scanf讀取了a,但是輸入緩沖區里面還留有一個\n,第二個scanf讀取這個\n。然 后輸入b和第二個回車,同樣的,第三個scanf讀取了b,第四個scanf讀取了第二個回車符。第五個讀取了c。所以五個scanf都執行了,并沒有提 前結束。只不過有的scanf讀取到了回車符而已。
解決方法:把程序改成這樣就可以了:
for( i = 0; i < n; i++){
??scanf("%c",&c[i]);
fflush(stdin);//刷新緩 沖區
}
或者不用scanf,而用gets()函數,如:
#include<stdio.h>
main()
{??
?char c[5];
?gets(c);
?printf(c);
?return 0;
}
但要注意: 這個函數自動把你最后敲的回車轉換為字符'\0'。如果你的輸入超過了數組的大小,那么就會產生錯誤。


3.scanf()函數的參數輸入類型不匹配問題
這是我在csdn論壇上見到的問題,這個錯誤 有時候會讓人莫名其妙。
#include<stdio.h>
main()
{
?int a=123;
?char c='t';
?printf("input\n");
?scanf("%d%c",&a,&c);
?scanf("%d%c",&a,&c);
?scanf("%d%c",&a,&c);
?printf("%d\n%c\n",a,c);
?return 0;
}
當輸入a 回車 后,會直接跳過下面2個scanf語句,直接輸出為
123
t
原因: 對于scanf("%d%c",&a,&c),scanf語句執行時,首先試圖從緩沖區中讀入一個%d類型的數據,如果和第一個參數匹 配,則繼續從緩沖區中讀取數據和第二個參數進行匹配,依次進行下去,直到匹配完所有的參數;如果其中有一個參數不匹配,那就從這個地方跳出,忽略這個 scanf后面所有的參數,而去執行下一條語句。
可以用下面的程序驗證一下:
#include <stdio.h>
int main()
{
?int a=123,b=1;
?char c='t';
?? scanf("%d%d",&a,&b);
?scanf("%c",&c);
?printf("%d\n%d\n%c\n",a,b,c);
?return 0;
}輸入:2 回車a 回車
結果是:
2
1
a
解決方法:scanf() 函數執行成功時的返回值是成功讀取的變量數,也就是說,你這個scanf()函數有幾個變量,如果scanf()函數全部正常讀取,它就返回幾。但這里還 要注意另一個問題,如果輸入了非法數據,鍵盤緩沖區就可能還個有殘余信息問題。
比如:
#include <stdio.h>
?main()
{
?int a=123,b;
?while(scanf("%d%d",&a,&b)!=2)
??fflush(stdin);
?printf("%d\n%d\n",a,b);
?return 0;
}
你可以試一下,如果輸入不是數字時,會有什么反應。

補充:scanf中一種很少見但很有用的轉換字符:[...]和[ ^...]。
#include<stdio.h>
?main()
{
char strings[100];
scanf("%[1234567890]",strings);
printf("%s",strings);
return? 0;
}
運行,輸入:1234werew后,結果是:1234。
通過運行可以發現它的作用是:如果輸入的字符屬于方括號內字 符串中某個字符,那么就提取該字符;如果一經發現不屬于就結束提取。該方法會自動加上一個字符串結束符到已經提取的字符后面。
scanf("%[^1234567890]",strings); 它的作用是:如果一經發現輸入的字符屬于方括號內字符串中某個字符,那么就結束提取;如果不屬于就提取該字符。該方法會自動加上一個字符串結束符到已經提 取的字符后面。
注意:方括號兩邊不能空格,如:scanf("%[ 1234567890 ]",strings); scanf("%[ ^1234567890 ]",strings); 不讓空格也會算在里面的。
用這種方法還可以解決scanf的輸入中不能有空格的問題。只要用
scanf("%[^\n]",strings); 就可以了。很神奇吧。

scanf原型:參見《C語言大全》和K&C
# include <stdio.h>;
int scanf( const char *format, ... );
?函數 scanf() 是從標準輸入流 stdin 中讀內容的通用子程序,可以讀入全部固有類型的數據并自動轉換成機內形式。
??? 在 C99 中,format 用 restrict 修飾。
format 指向的控制串由以下三類字符組成:
?????? ● 格式說明符
?????? ● 空白符
?????? ● 非空白符
????
???? 轉換字符(就是%后跟的部分)?????????????
?????? a?? 讀浮點值(僅適用于 C99)?????????????????????????????????
?????? A?? 讀浮點值(僅適用于 C99)?????????????????????????????????????????????????
?????? c?? 讀單字符???????????????????????????????????????????????
?????? d?? 讀十進制整數???????????????????????????????????????????
?????? i?? 讀十進制、八進制、十六進制整數?????????????????????????
?????? e?? 讀浮點數???????????????????????????????????????????????
?????? E?? 讀浮點數???????????????????????????????????????????????
?????? f?? 讀浮點數???????????????????????????????????????????????
?????? F?? 讀浮點數(僅適用于 C99)?????????????????????????????????
?????? g?? 讀浮點數???????????????????????????????????????????????
?????? G?? 讀浮點數???????????????????????????????????????????????
?????? o?? 讀八進制數?????????????????????????????????????????????
?????? s?? 讀字符串???????????????????????????????????????????????
?????? x?? 讀十六進制數???????????????????????????????????????????
?????? X?? 讀十六進制數???????????????????????????????????????????
?????? p?? 讀指針值???????????????????????????????????????????????
?????? n?? 至此已讀入值的等價字符數???????????????????????????????
?????? u?? 讀無符號十進制整數?????????????????????????????????????
????? [ ]? 掃描字符集合???????????????????????????????????????????
?????? %?? 讀 % 符號(百分號)??????????????????????????????????????
???
??? 例如: %s 表示讀串而 %d 表示讀整數。格式串的處理順序為從左到右,格式說明符逐一與變元表中的變元匹配。為了讀取長整數,可以將 l(ell) 放在格式說明符的前面;為了讀取短整數,可以將 h 放在格式說明符的前面。這些修飾符可以與 d、i、o、u 和 x 格式代碼一起使用。

??? 默認情況下,a、f、e 和 g 告訴 scanf() 為 float 分配數據。 如果將 l(ell) 放在這些修飾符的前面,則 scanf() 為 double 分配數據。使用 L 就是告訴 scanf(),接收數據的變量是 long double 型變量。

??? 如果使用的現代編譯器程序支持 1995 年增加的寬字符特性, 則可以與 c 格式代碼一起,用 l 修飾符說明類型 wchar_t 的寬字符指針;也可以與 s 格式代碼一起,用 l 修飾符說明寬字符串的指針。l 修飾符也可以用于修飾掃描集,以說明寬字符。

??? 控制串中的空白符使 scanf() 在輸入流中跳過一個或多個空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本質上,控制串中的空白符使 scanf() 在輸入流中讀,但不保存結果,直到發現非空白字符為止。

??? 非空白符使 scanf() 在流中讀一個匹配的字符并忽略之。例如,"%d,%d" 使 scanf() 先讀入一個整數,讀入中放棄逗號,然后讀另一個整數。如未發現匹配,scanf() 返回。

??? scanf() 中用于保存讀入值的變元必須都是變量指針,即相應變量的地址。

??? 在輸入流中,數據項必須由空格、制表符和新行符分割。逗號和分號等不是分隔符,比如以下代碼:
??? scanf( "%d %d", &r, &c );
將接受輸入 10 20,但遇到 10,20 則失敗。

??? 百分號(%)與格式符之間的星號(*)表示讀指定類型的數據但不保存。因此,
??? scanf( "%d %*c %d", &x, &y );
對 10/20 的讀入操作中,10 放入變量 x,20 放入 y。

??? 格式命令可以說明最大域寬。 在百分號(%)與格式碼之間的整數用于限制從對應域讀入的最大字符數。例如,希望向 address 讀入不多于 20 個字符時,可以書寫成如下形式:
??? scanf( "%20s", address );

??? 如果輸入流的內容多于 20 個字符,則下次 scanf() 從此次停止處開始讀入。 若達到最大域寬前已遇到空白符,則對該域的讀立即停止;此時,scanf() 跳到下一個域。

??? 雖然空格、制表符和新行符都用做域分割符號,但讀單字符操作中卻按一般字符處理。例如,對輸入流 "x y" 調用:
??? scanf( "%c%c%c", &a, &b, &c );
返回后,x 在變量 a 中,空格在變量 b 中,y 在變量 c 中。

??? 注意,控制串中的其它字符,包括空格、制表符和新行符,都用于從輸入流中匹配并放棄字符,被匹配的字符都放棄。例如,給定輸入流 "10t20",調用:
??? scanf( "%dt%d", &x, &y );
將把 10 和 20 分別放到 x 和 y 中,t 被放棄,因為 t 在控制串中。

??? ANSI C 標準向 scanf() 增加了一種新特性,稱為掃描集(scanset)。 掃描集定義一個字符集合,可由 scanf() 讀入其中允許的字符并賦給對應字符數組。 掃描集合由一對方括號中的一串字符定義,左方括號前必須綴以百分號。 例如,以下的掃描集使 scanf() 讀入字符 A、B 和 C:
??? %[ABC]

??? 使用掃描集時,scanf() 連續吃進集合中的字符并放入對應的字符數組,直到發現不在集合中的字符為止(即掃描集僅讀匹配的字符)。返回時,數組中放置以 null 結尾、由讀入字符組成的字符串。

??? 用字符 ^ 可以說明補集。把 ^ 字符放為掃描集的第一字符時,構成其它字符組成的命令的補集合,指示 scanf() 只接受未說明的其它字符。
??? 對于許多實現來說,用連字符可以說明一個范圍。 例如,以下掃描集使 scanf() 接受字母 A 到 Z:
??? %[A-Z]
??? 重要的是要注意掃描集是區分大小寫的。因此,希望掃描大、小寫字符時,應該分別說明大、小寫字母。
??? scanf() 返回等于成功賦值的域數的值,但由于星號修飾符而讀入未賦值的域不計算在內。給第一個域賦值前已出錯時,返回 EOF。

??? C99 為 scanf() 增加了幾個格式修飾符:hh、ll、j、z 和 t。hh 修飾符可用于 d、i、o、u、x、X 或 n。它說明相應的變元是 signed 或 unsigned char 值,或用于 n 時, 相應的變元是指向 long char 型變量的指針。ll 修飾符也可用于 d、i、o、u、x、X 或 n。它說明相應的變元是 signed 或者 unsigned long long int 值。
??? j 格式修飾符應用于 d、i、o、u、x、X 或 n,說明匹配的變元是類型 intmax_t 或 uintmax_t。這些類型在 <stdint.h>; 中聲明,并說明最大寬度的整數。
??? z 格式修飾符應用于 d、i、o、u、x、X 或 n,說明匹配的變元是指向 size_t 類型對象的指針。該類型在 <stddef.h>; 中聲明,并說明 sizeof 的結構。
??? t 格式修飾符應用于 d、i、o、u、x、X 或 n,說明匹配的變元是指向 ptrdiff_t? 類型對象的指針。該類型在 <stddef.h>; 中聲明,并說明兩個指針之間的差別。

例子:

# include <stdio.h>;
int main( void )
{
??? char str[80], str2[80];
??? int i;
?/* read a string and a integer */
??? scanf( "%s%d", str, &i );
?/* read up to 79 chars into str */
??? scanf( "%79s", str );
?/* skip the integer between the two strings */
??? scanf( "%s%*d%s", str, str2 );
? return 0;
}

再看一下為什么linux中用不起來fflush:

C/C++ 誤區二:fflush(stdin)

來 源:螞蟻的 C/C++ 標準編程 作者:antigloss 等級:精品
發布于2005-10-22 13:56 被讀12809次 【字體:

Antigloss 最后修改于 2006-11-25

?

1.?????? 為什么 fflush(stdin) 是錯的

?

首先請看以下程序:

?

??? ?????????????? #include < stdio.h>

?

int main( void )

{

??? int i;

??? for (;;) {

??????? fputs("Please input an integer: ", stdout);

??????? scanf("%d", &i);

??????? printf("%d\n", i);

??? }

??? return 0;

}

?

這個程序首先會提示用戶輸入一個整數,然后等待用戶輸入,如果用戶 輸入的是整數,程序會輸出剛才輸入的整數,并且再次提示用戶輸入一個整數,然后等待用戶輸入。但是一旦用戶輸入的不是整數(如小數或者字母),假設 scanf 函數最后一次得到的整數是 2 ,那么程序會不停地輸出“Please input an integer: 2”。這是因為 scanf("%d", &i); 只能接受整數,如果用戶輸入了 字母,則這個字母會遺留在“輸入緩沖區”中。因為緩沖中有數據,故而 scanf 函數不會等待用戶輸入,直接就去緩沖中讀取,可是緩沖中的卻是字母,這個字母再次被遺留在緩沖中, 如此反復,從而導致不停地輸出“Please input an integer: 2”。

?

也許有人會說:“居然這樣,那么在 scanf 函數后面加上‘fflush(stdin);’,把輸入 緩沖清空掉不就行了?”然而這是錯的!CC++標準里從來沒有定義過 fflush(stdin)。也許有人會說:“可是我用 fflush(stdin) 解決了這個問題,你怎么能說是錯的呢?”的確,某些編譯器(如VC6)支持用 fflush(stdin) 來清空輸入緩沖,但是并非所有 編譯器都要支持這個功能(linux 下的 gcc 不支持),因為標準中根本沒有定 義 fflush(stdin)MSDN 文檔里也清楚地寫著fflush on input stream is an extension to the C standardfflush 操作輸入流是對 C 標準的擴充)。當然,如果你毫不在乎程序的移 植性,用 fflush(stdin) 也沒什么大問題。以下是 C99 fflush 函數的定義:

?

int fflush( FILE *stream);

?

如果 stream 指向輸出流或者更新流update stream),并且這個更新流
最近執行的操作不是輸入,那么 fflush 函數將把這個流中任何待寫數據傳送至
宿主環境(host environment)寫入文件。否則,它的行為是 未 定義的。

原文如下:


int fflush( FILE *stream);

If stream points to an output stream or an update stream in which
the most recent
operation was not input, the fflush function causes
any unwritten data for that
stream to be delivered to the host environment
to be written to the file;
otherwise, the behavior is undefined.

?

其中,宿主環境可以理解為操作系統或內核等。

?

??? 由此可知,如果 stream 指向輸入流(如 stdin),那么 fflush 函數的行為是不確定的。故而使用 fflush(stdin) ?是不正確的,至少是移植性不好的。

?

?

2.?????? 清空 輸入緩沖區的方法

?

?雖然不可以用 fflush(stdin),但是我們可以自己寫代碼來清空輸入緩沖區。只需要在 scanf 函數后面加上幾句簡單的代碼就可以了。

???????
/* C 版本 */
??????? #include <stdio.h>?


??????? int main( void )
??????? {
??????????? int i, c;
???
?????????? for ( ; ; )
??????????? {
??????? ??????? fputs("Please input an integer: ", stdout);
??????????????? scanf("%d", &i);

?????????????if ( feof(stdin) || ferror(stdin) )
??????????????? { /* 如果用戶輸入 文件結束標志(或文件已被讀完), */
??????? ????????? /* 或者發生讀寫錯誤,則退出循環?????????????? */
???????????
?????????????? ???? /* do something */
??????? ??????????? break;
????????????????}
??????? ??????? /* 沒有發生錯誤,清空輸入流。???????????????? */
??????????????? /* 通過 while 循環把輸 入流中的余留數據“吃”掉 */
??????? ??????? while ( (c = getchar()) != '\n' && c != EOF ) ;
????????????????/*?使用 scanf("%*[^\n]");?也可以清空輸入流, */

?????????????? /*?不過會殘留 \n 字符。????????????????????????? */

???????????????printf("%d\n", i);
??????????? }

????? ??????? return 0;
??????? }

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲免费在线视频| 久久激情视频免费观看| 狠狠综合久久av一区二区小说| 影音先锋亚洲精品| 欧美一区二区三区啪啪| 亚洲久久成人| 欧美激情欧美激情在线五月| 一区二区三区无毛| 久久精品成人欧美大片古装| 一区二区精品国产| 欧美日韩国产色视频| 91久久精品一区二区别| 久久久久久久久蜜桃| 亚洲午夜激情网页| 国产精品高潮久久| 亚洲综合色丁香婷婷六月图片| 一区二区三区国产在线观看| 欧美国产精品va在线观看| 一区在线观看| 久久久久久精| 欧美在线不卡视频| 国产自产在线视频一区| 久久爱www| 亚欧美中日韩视频| 国产视频一区在线观看| 久久久久网址| 久久久久在线观看| 亚洲日本欧美| 亚洲美女精品一区| 欧美日韩在线免费| 亚洲欧美日韩精品久久久久| 亚洲一区在线播放| 国产视频在线一区二区| 蜜臀av一级做a爰片久久| 久久久久久伊人| 亚洲大片免费看| 欧美高清在线视频| 欧美激情视频一区二区三区在线播放| 99热精品在线观看| 亚洲小说欧美另类社区| 国内成人在线| 亚洲国产另类久久精品| 欧美久久一级| 午夜欧美不卡精品aaaaa| 午夜精品视频| 亚洲高清毛片| 日韩视频免费观看高清完整版| 欧美视频在线免费看| 久久成人这里只有精品| 久久夜色精品国产欧美乱| 日韩视频一区二区三区在线播放免费观看| 日韩五码在线| 国产综合色在线视频区| 亚洲黑丝在线| 国产午夜精品久久| 91久久久精品| 国产在线乱码一区二区三区| 亚洲国产欧美久久| 国产欧美精品一区二区三区介绍| 欧美成人高清视频| 欧美网站在线| 亚洲电影在线免费观看| 国产乱码精品一区二区三区忘忧草 | 国内精品一区二区| 欧美国产日韩精品| 国产精品福利网| 欧美国产成人精品| 国产精品区一区二区三| 欧美国产日韩一区二区在线观看 | 国产精品中文字幕欧美| 欧美激情视频免费观看| 国产精品久久一卡二卡| 国产日韩精品入口| 国产精品视频大全| 午夜视频一区| 欧美va亚洲va日韩∨a综合色| 亚洲影院色无极综合| 久久婷婷麻豆| 久久av一区二区| 欧美午夜精品久久久久久久| 久久综合免费视频影院| 国产精品任我爽爆在线播放| 91久久精品国产91久久性色tv| 国产日韩在线一区| 亚洲视频视频在线| 亚洲毛片在线观看.| 久久久久免费观看| 久久精品最新地址| 国产伦精品一区二区三区照片91 | 午夜在线成人av| 亚洲伊人一本大道中文字幕| 美国成人直播| 男女视频一区二区| 国产一级精品aaaaa看| 宅男66日本亚洲欧美视频| 99视频+国产日韩欧美| 欧美丰满高潮xxxx喷水动漫| 欧美**字幕| 亚洲高清视频在线| 久久综合伊人| 免费久久久一本精品久久区| 国产一区二区三区日韩欧美| 欧美一区二区福利在线| 亚洲在线播放| 欧美性事在线| 亚洲综合导航| 久久精品盗摄| 精品91免费| 蜜桃久久av一区| 亚洲精品社区| 亚洲欧美精品在线| 国产一区二区三区电影在线观看| 欧美主播一区二区三区| 欧美高清成人| 亚洲一区二区三区午夜| 国产一区二区三区免费不卡| 麻豆成人在线观看| 99综合视频| 久久综合伊人77777尤物| 亚洲精品少妇30p| 国产精品亚洲人在线观看| 久久米奇亚洲| 亚洲最新色图| 久久综合网络一区二区| 妖精视频成人观看www| 国产日韩欧美中文在线播放| 毛片基地黄久久久久久天堂| 在线综合+亚洲+欧美中文字幕| 快she精品国产999| 中国av一区| 国产一区视频网站| 欧美大胆成人| 亚洲综合视频网| 欧美激情一区二区在线| 一区二区久久久久| 国内精品久久久久影院 日本资源| 欧美成人中文| 亚洲午夜视频在线| 美国十次了思思久久精品导航| 激情另类综合| 校园激情久久| 久久人人97超碰国产公开结果| 亚洲精品久久久久久久久久久久| 国产精品高精视频免费| 亚洲精选视频在线| 亚洲美女免费视频| 激情综合中文娱乐网| 欧美一区二区三区男人的天堂| 亚洲一区二区视频在线观看| 欧美激情性爽国产精品17p| 欧美自拍丝袜亚洲| 久久欧美中文字幕| 国内外成人免费激情在线视频| 午夜国产一区| 亚洲手机视频| 国产精品va| 亚洲欧美日韩电影| 日韩视频在线你懂得| 一区二区三区www| 欧美日韩午夜精品| 亚洲欧美精品在线| 亚洲无毛电影| 国产欧美日韩另类视频免费观看| 性欧美办公室18xxxxhd| 中文久久精品| 久久av一区二区三区漫画| 国产一区二区无遮挡| 中文在线资源观看网站视频免费不卡| 亚洲国产视频直播| 亚洲视屏在线播放| 国产日韩久久| 国产一区二区av| 老司机凹凸av亚洲导航| 亚洲日本欧美天堂| 久久一区精品| 一区二区三欧美| 国产精品毛片va一区二区三区 | 欧美激情女人20p| 亚洲伦理久久| 亚洲国产精品成人| 亚洲精品欧美精品| 欧美日韩免费在线| 欧美在线视频日韩| 最新亚洲视频| 久久精品女人| 亚洲精品一区二区三区99| 欧美激情一区二区三区高清视频| 亚洲一区二区三区在线播放| 久热精品在线视频| 在线观看国产日韩| 亚洲美女毛片| 国产一区二区欧美| 欧美日韩免费区域视频在线观看| 国产精品a久久久久久| 久久久久久久久久久成人| 亚洲天堂久久| 久久天天狠狠| 亚洲美女黄色片| 欧美成人福利视频| 国产精品日韩欧美一区|