scanf(“%c”)等問題,清空輸入輸出快取
C語言學習者經常會遇到printf()和scanf()的一些問題,沒有正確輸出或者輸入。例如scanf(“%c”,&ch)沒有接收到輸入字元。或者輸出printf(“\n”)不會換行的問題。
舉個例子:
#include <stdio.h>
int main()
{
char person[5];
int i;
printf("輸入編號:");
scanf("%d",&i);
printf("請輸入編號:%d的許可權:",i);
scanf("%c",&person[i]);
return 0;
}
上面這個程式碼執行出錯:
原因:
清除上一個scanf的快取,因為它接受了一個數字和回車符號,不然下一個scanf()用%c接受字串的時候, 會將上一個的回車符接收到,而不會停下來去等待使用者去輸入一個字元。
getchar();//或者適用getchar去接受上一個的回車符
fflush(stdin);//非標準C,linux下不適用,windows可以使用
setbuf(stdin,NULL);//將輸入緩衝區清空,linux適用
正確的程式碼:
備註:輸入緩衝區是stdin,輸出緩衝區是stdout#include <stdio.h> int main() { char person[5]; int i; printf("輸入編號:"); scanf("%d",&i); printf("請輸入編號:%d的許可權:",i); { //清除上一個scanf的快取,因為它接受了一個數字和回車符號, //不然下一個scanf()用%c接受字串的時候,會將上一個的回車符接收到, //而不會停下來去等待使用者去輸入一個字元。 //getchar();//或者適用getchar去接受上一個的回車符 //fflush(stdin);//非標準C,linux下不適用,windows可以使用 setbuf(stdin,NULL);//將輸入緩衝區清空,linux適用 } //scanf("%c",&person[i]); scanf(" %c",&person[i]);//或者先去用一個空格去把上一個的回車符匹配掉也可以。 return 0; }
相關推薦
scanf(“%c”)等問題,清空輸入輸出快取
C語言學習者經常會遇到printf()和scanf()的一些問題,沒有正確輸出或者輸入。例如scanf(“%c”,&ch)沒有接收到輸入字元。或者輸出printf(“\n”)不會換行的問題。
jquery自動獲取游標在字串後,清空輸入框文字再聚焦
jquery自動獲取游標在字串後 var str=$("#callnumber").val(); $("#callnumber").val("").focus().val(str
[資料結構]c語言實現鏈棧的入棧,出棧,清空,銷燬等操作
最近在學習資料結構中的棧,於是在此記錄一下棧鏈式結構的抽象資料型別 /* 棧的抽象資料型別 ADT 棧(stack) Data 同線性表。元素具有相同的型別,相鄰元素具有前驅和後繼關係 Operation InitStack(*S):初始化
C 清空輸入緩衝區,以及fflush(stdin)的使用誤區和解決方法
對C 語言初學者來說,fflush(stdin)函式被解釋為會清空輸入緩衝區的一個系統函式,這是一個曾經幾乎對過一半的說法,隨著電腦科學的進步,在學習的過程中的逐步完善,將fflush(stdin)函式的過去與現在分析一下。 Personal th
定義一個數組,陣列初始長度由控制檯獲取 。隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍並輸出,清空陣列中所有元素且值繼承陣列長度,並重新進行手動新增元素,無限死迴圈直至輸出-0後結束程式。
package com.tedu; import java.util.Arrays; import java.util.Scanner; /** * 需求: * 定義一個初始陣列,陣列初始長度由控制檯獲取 * 隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍輸
C# ListBox刪除列表控制元件中選擇的單項,多項,清空所有
單項: private void button1_Click(object sender, EventArgs e) { listBox1.Items.Remove(listBox1.SelectedItem); }
AVL樹C++實現(插入,刪除,查詢,清空,遍歷操作)
AVL.h檔案程式碼 #pragma once #include<iostream> #include<stack> #include <assert.h> using namespace std; using namespace std; template<cl
【資料結構】C語言最基礎練習:棧的初始化,壓棧,出棧,遍歷,清空
隨手練習一下,詳細程式碼解釋都在程式碼片裡請仔細看看 如果有什麼不對的地方,請在下方留言 先建立標頭檔案: #define _CRT_SECURE_NO_WARNINGS 1 #ifndef _TEST_H #define _TEST_H //棧的鏈式儲存結構;
C語言清空輸入緩衝區
先來看一段程式碼: #include <stdio.h> int main() { int num; char ch ; scanf("%d", &num); scanf("%c", &ch); printf("hello world
檢測edittext中文字的輸入狀態,清空內容
import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.View; import and
棧操作包括入棧,出棧,清空棧,銷燬棧等
#include<malloc.h> #include<string.h> #include<stdio.h> #define OVERFLOW -1 #define STACK_INIT_SIZE 10 #define
JS自動生成動態HTML驗證碼頁面,輸入錯誤自動清空輸入框
<html> <head> <title>驗證碼</title> <meta charset="utf-8" /> <style type="text/
kindeditor獲取內容,清空,設定kindeditor輸入提示資訊
1初始化kindeditor var clearDefault=true;//是否有預設文字資訊 var editor = KindEditor.create('textarea[name="s_co
Ajax提交數據後,清空form表單
由於 清空 bsp style 不同 註意 res RM input 按鈕不同,頁面相同,還需要顯示的數據不同,這裏會由於頁面的緩存問題,導致,每次點開這個頁面顯示的數據相同。 這不是我們想要的。這就需要清楚表單數據了。 如下: $(‘#myform‘)[0].reset(
shell基礎02 標準文件描述符STDIN,STDOUT,STDERR和輸入輸出重定向
stdin isp pen blank input open 日誌文件 重定向 分開 文件描述符 縮寫 描述
微信小程序 清空輸入框
use inf 映射 清空 .com javascrip ace ima on() <view class="weui-cell weui-cell_input"> <image class="r-right" src="../../
windows python2下停止,清空,啟動tomcat
import socket import os import os.path import shutil import time # 獲取本機IP地址 def get_host_ip(): """ get host ip address 獲取本機IP地址 :re
關於c++中進位制輸入輸出
#include <iostream> using namespace std; void main() { int a = 010, b = 10, c = 0X10;//以0開頭的數是八進位制數,0X開頭的是16進位制數. //以十進位制顯示資料; cout &
C程式設計--對檔案的輸入輸出(案例)
第十章 問題一(fputc()函式的使用) 從鍵盤中輸入一些字元,逐個把他們送到磁碟上去,直到使用者輸入一個’#'鍵為止; #include<stdio.h> #include<stdlib.h>//用於 exit(0); int ma
ETL-kettle基本操作,表的輸入輸出
基本操作介面 在上圖中的轉換隻是一個容器,真正的轉換步驟需要自己去建立,還是在檔案中新建--->轉換 這個轉換才是真正的建立自己的業務功能轉換。 表輸入介面資訊介紹 文字檔案介面概述 然