C語言中清除記憶體緩衝區的函式是fflush(),清除輸入緩衝區用fflush(stdin);其中stdin表示標準輸入。該函式通常用在輸入類函式的前面,用以清除輸入緩衝區中的內容,避免接收到上次殘留的內容而出錯。舉例如下:
1、不加fflush函式:// 將輸入的5個字元存放到陣列str中,並輸出int i;char ch, str[6]={"\0"};for(i=0; i<5; i++){ scanf("%c", &ch); str[i] = ch;}printf("%s\n", str);// 程式只能輸入三個字元(每個字元間包含一個回車符),因為不加fflush函式時,將殘留在緩衝區中的回車符也當成了一個字元輸入到陣列str中。
2、加fflush函式:int i;char ch, str[6]={"\0"};for(i=0; i<5; i++){ fflush(stdin); // 清除留在緩衝區中的回車符,確保接收到的是使用者輸入的字元 scanf("%c", &ch); str[i] = ch;}printf("%s\n", str);// 程式能正常輸出
C語言中清除記憶體緩衝區的函式是fflush(),清除輸入緩衝區用fflush(stdin);其中stdin表示標準輸入。該函式通常用在輸入類函式的前面,用以清除輸入緩衝區中的內容,避免接收到上次殘留的內容而出錯。舉例如下:
1、不加fflush函式:// 將輸入的5個字元存放到陣列str中,並輸出int i;char ch, str[6]={"\0"};for(i=0; i<5; i++){ scanf("%c", &ch); str[i] = ch;}printf("%s\n", str);// 程式只能輸入三個字元(每個字元間包含一個回車符),因為不加fflush函式時,將殘留在緩衝區中的回車符也當成了一個字元輸入到陣列str中。
2、加fflush函式:int i;char ch, str[6]={"\0"};for(i=0; i<5; i++){ fflush(stdin); // 清除留在緩衝區中的回車符,確保接收到的是使用者輸入的字元 scanf("%c", &ch); str[i] = ch;}printf("%s\n", str);// 程式能正常輸出