在上一遍隨筆中,我們知道可以用fgets()函數來代替不安全的gets()函數。fgets函數中的第二個參數限制了讀取的個數。
上篇文章也提到,fgets是會讀取回車換行符的。有時候我們並不希望在字符串中存在換行符。有的時候我們在一行中多輸入了幾個字符,而這幾個字符並不是我們想要的。這時可以寫一個小程序解決這個問題
下面看程序(來自於C Primer Plus 第六版):該程序的功能是:讀取輸入行,刪除存在字符串中的換行符,如果沒有換行符,則丟棄數組裝不下的字符。
#include <stdio.h> #include <stdlib.h> #define NUM 5 #define SIZE 10 int main(int argc,char* argv[]) { char src[NUM][SIZE]; printf("請輸入,空行表示結束\n"); int i=0; while( ( fgets(src[i],SIZE,stdin) ) != NULL && src[i][0]!='\n' ) { int j=0; while( (src[i][j] != '\n') && (src[i][j] != '\0' ) ) j++; if(src[i][j] == '\n') src[i][j]='\0'; else { while( getchar() !='\n' ) continue; } printf("輸入為:%s\n",src[i]); i++; if(i>=5) { break; } } return 0; }
