日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c语言防止缓冲区数据作为有效字符被读入

發布時間:2025/5/22 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言防止缓冲区数据作为有效字符被读入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
常見的防止將數據輸入時存入緩沖區中的回車符讀入下一個字符變量的方法是 1.用函數getchar()將回車符先讀入,防止成為下一個字符型變量的有效字符。 2.在%c前面加一個空格,忽略前面數據輸入時存入緩沖區中的回車符,避免被后面的字符型變量當成有效字符讀入。 int main(){int a;char b;printf("Please input an integer:");scanf("%d",&a);printf("intnger:%d",a);getchar();//將存于緩沖區中的回車符讀入,避免在后面作為有效字符讀入printf("Please input a char:");scanf("%c",&c);//或者使用scanf(" %c",&c);效果與getchar()一樣printf("char=%c\n",c); } 當我們需要連續從鍵盤鍵入兩個字符型數組的時候,為了防止緩沖區溢出,我們使用了安全函數 char *fgets(char *s,int n,stdin)。但是出現問題。下面的代碼就是初始代碼, #include<stdio.h> #include<stdlib.h>int main(int argc,char *argv[]){char str[10];char str2[10];char c;printf("請輸入str:");fgets(str,10,stdin);printf("請輸入str2:");fgets(str2,10,stdin);printf("str=%s\n",str);printf("str2=%s\n",str2);return 0;

運行之后發現

結果: 請輸入str:abcdefghjklmn 請輸入str2:str=abcdefghj str2=klmn 然而這并不是我們所需要的結果,str2數組將緩沖區中str沒有讀完的數據當成有效字符讀入了,這就讓我們無法鍵入str2的值,因此為了解決這個問題。讓我們能夠正常鍵入第二個變量。于是有了改進版: #include<stdio.h> #define N 10 int main(int argc,char *argv[]){char str[N];char str2[N];char c;printf("請輸入str:");fgets(str,10,stdin);while((c=getchar())!='\n'&&c!=EOF); //清空輸出流clearerr(stdin);// 清楚流的錯誤標記printf("請輸入str2:");fgets(str2,10,stdin);printf("str=%s\n",str);printf("str2=%s\n",str2);return 0; }

運行結果

請輸入str:abcdefghijklmn 請輸入str2:abcdefghijklmn str=abcdefghi str2=abcdefghi

轉載于:https://www.cnblogs.com/cmustard/p/6769950.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的c语言防止缓冲区数据作为有效字符被读入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。