scanf()在讀取時不檢查邊界,所以可能會造成內(nèi)存泄露,所以vs2013提供了scanf_s()來替代,在調(diào)用時,必須提供給scanf_s一個數(shù)字以表明讀取多少位字符,用法為scanf_s("%c",letter,sizeof(letter)),否則,即使ctrl+f7和ctrl+f5通過了,程序的運行結(jié)果也可能與自己所期望大相徑庭的。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比望謨網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式望謨網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋望謨地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。
如果非要用scanf函數(shù),那么通過以下兩種方式可以禁止警告:
(1)右擊項目——屬性——c/c++——預(yù)處理器——預(yù)處理器定義中增加_crt_secure_no_warnings,然后點確定,退出。
(2)在函數(shù)最頂頭進行定義:#define
_crt_secure_no_warnings,也可以禁止報錯警告。
C語言是我們經(jīng)常使用的編程語言,那么如何運用C語言輸出字符呢?下面我給大家分享一下。
工具/材料
dev c++
01
首先點擊文件菜單,然后選擇新建下面的項目,如下圖所示
02
接下來在彈出的新建項目界面中我們選擇C語言,如下圖所示
03
然后我們在main函數(shù)中聲明一個字符,如下圖所示
04
最后我們用print函數(shù)對字符進行輸出即可,如下圖所示
C語言怎么用printf輸出字符串
printf函數(shù)的一般格式
printf(格式控制字符串,輸出表列);
以圖1所示為例。
圖1.
函數(shù)參數(shù)包括兩部分:
【1】格式控制字符串,是用雙引號括起來的字符串,也稱為轉(zhuǎn)換控制字符串,它指定輸出數(shù)據(jù)項的類型和格式。
它包括兩種信息:
●格式說明項:由%和格式字符組成,如%d,%f等。格式說明總是由%字符開始,到格式字符終止。它的作用是將輸出的數(shù)據(jù)項轉(zhuǎn)換為指定的格式輸出。輸出表列中的每個數(shù)據(jù)項對應(yīng)一個格式說明項。
● 普通字符:即需要原樣輸出的字符,如逗號和換行符。
【2】輸出列表,是需要輸出的一些數(shù)據(jù)項,可以是表達式。
例如:假如a=3,b=4,那么printf("a=%db=%d",a,b);,輸出a=3b=4。其中兩個?“%d”是格式說明,表示輸出兩個整數(shù),分別對應(yīng)變量a,b?!癮=”,“b=”是普通字符,原樣輸出。
由于printf是函數(shù),因此,格式控制字符串和輸出表列實際上都是函數(shù)的參數(shù)。printf函數(shù)的一般形式可以表示為:
printf(參數(shù)1,參數(shù)2,參數(shù)3,…,參數(shù)n)
printf函數(shù)的功能是將參數(shù)2到參數(shù)n按照參數(shù)1給定的格式輸出。
【3】格式字符?(構(gòu)成格式說明項)
對于不同類型的數(shù)據(jù)項,應(yīng)當(dāng)使用不同的格式字符構(gòu)成的格式說明項。常用的有以下幾種格式字符:(按不同類型數(shù)據(jù),列出各種格式字符的常用用法)
【d格式符】用來輸出十進制整數(shù)。有以下幾種用法:
●?%d,按照數(shù)據(jù)的實際長度輸出。
●?%md,m指定輸出字段的寬度?(整數(shù))。如果數(shù)據(jù)的位數(shù)小于m,則左端補以空格(右對齊);若大于m,則按照實際位數(shù)輸出。
●?%-md,m指定輸出字段的寬度?(整數(shù))。如果數(shù)據(jù)的位數(shù)小于m,則右端補以空格?(左對齊);若大于m,則按照實際位數(shù)輸出。
●?%ld,輸出長整型數(shù)據(jù),也可以指定寬度%mld。
【o格式符】以八進制形式輸出整數(shù)。注意:是將內(nèi)存單元中的各位的值按八進制形式輸出,輸出的數(shù)據(jù)不帶符號,即將符號位也一起作為八進制的一部分輸出。
例如:
inta=-1;
printf("%d,%o,%x",a,a,a);
-1的原碼:1000,0000,0000,0001。
-1在內(nèi)存中的補碼表示為:
1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff
輸出:-1,177777,ffff
【s格式符】用來輸出一個字符串。有以下幾種用法:
●?%s,輸出字符串。
●?%ms,輸出的字符串占m列,如果字符串長度大于m,則字符串全部輸出;若字符串長度小于m,則左補空格?(右對齊)。
●?%-ms,輸出的字符串占m列,如果字符串長度大于m,則字符串全部輸出;若字符串長度小于m,則右補空格?(左對齊)。
●?%m.ns,輸出占m列,但只取字符串左端n個字符,左補空白?(右對齊)。
●?%-m.ns,輸出占m列,但只取字符串左端n個字符,右補空白?(左對齊)。
【 f 格式符】用來輸出實數(shù)?(包括單、雙精度,單雙精度格式符相同),以小數(shù)形式輸出。有以下幾種用法:
●?%f,不指定寬度,使整數(shù)部分全部輸出,并輸出6位小數(shù)。注意,并非全部數(shù)字都是有效數(shù)字,單精度實數(shù)的有效位數(shù)一般為7位?(雙精度16位)。
●?%m.nf,指定數(shù)據(jù)占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,左端補空格(右對齊)。
●?%-m.nf,指定數(shù)據(jù)占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,右端補空格(左對齊)。
【 e 格式符】以指數(shù)形式輸出實數(shù)。可用以下形式表示:
●?%e,不指定輸出數(shù)據(jù)所占的寬度和小數(shù)位數(shù),由系統(tǒng)自動指定。如6位小數(shù),指數(shù)占5位,-e占1位,指數(shù)符號占1位,指數(shù)占3位。數(shù)值按照規(guī)格化指數(shù)形式輸出?(小數(shù)點前必須有而且只有1位非0數(shù)字)。
這句話是不對的,因為%c只能夠輸出單個字符,%s表示的是輸出字符串,所以說這句話是錯誤的。
printf()函數(shù)是式樣化輸出函數(shù), 一般用于向準(zhǔn)則輸出設(shè)備按規(guī)定式樣輸出消息。正在編寫步驟時經(jīng)常會用到此函數(shù)。printf()函數(shù)的挪用式樣為:printf(“式樣化字符串”,參數(shù)表);。
其中式樣化字符串包括兩部分內(nèi)容:一部分是正常字符,這些字符將按原樣輸出;另一部分是式樣化規(guī)定字符。以“%”開端,后跟一個或幾個規(guī)定字符,用來確定輸出內(nèi)容式樣。
擴展資料:
printf函數(shù)注意:
函數(shù)printf從右到左壓棧,然后將先讀取放到棧底,最后讀取的放在棧頂,處理時候是從棧頂開始的,所以我們看見的結(jié)果是,從右邊開始處理的。
格式:
1、可以在“%”和字母之間插進數(shù)字表示最大場寬。
例如:%3d表示輸出3位整型數(shù),不夠3位右對齊。
%9.2f表示輸出場寬為9的浮點數(shù),其中小數(shù)位為2,整數(shù)位為6。
小數(shù)點占一位,不夠9位右對齊。
%8s表示輸出8個字符的字符串,不夠8個字符右對齊。
如果字符串的長度、或整型數(shù)位數(shù)超過說明的場寬,將按其實際長度輸出。
但對浮點數(shù),若整數(shù)部分位數(shù)超過了說明的整數(shù)位寬度,將按實際整數(shù)位輸出。
若小數(shù)部分位數(shù)超過了說明的小數(shù)位寬度,則按說明的寬度以四舍五入輸出。
另外,若想在輸出值前加一些0,就應(yīng)在場寬項前加個0。
例如:%04d表示在輸出一個小于4位的數(shù)值時,將在前面補0使其總寬度為4位。
如果用非浮點數(shù)表示字符或整型量的輸出格式,小數(shù)點后的數(shù)字代表最大寬度,
小數(shù)點前的數(shù)字代表最小寬度。
例如:%6.9s表示顯示一個長度不小于6且不大于9的字符串。若大于9,則第9個字符以后的內(nèi)容將被刪除。
2、可以在“%”和字母之間加小寫字母l,表示輸出的是長型數(shù)。
例如:%ld表示輸出long整數(shù)
%lf表示輸出double浮點數(shù)
3、可以控制輸出左對齊或右對齊,即在“%”和字母之間加入一個“-”號可說明輸出為左對齊, 否則為右對齊。
參考資料來源:百度百科-printf
在C語言中,輸入輸出字符串有以下兩種方式:
1 用scanf/printf輸入輸出。
scanf/printf是C語言的格式化輸入輸出函數(shù),可以用于輸入輸出各種基礎(chǔ)類型,字符串(char*)也
其支持范圍內(nèi)。
格式化字符為%s。
定義
char str[100];
輸入
scanf("%s",str);
輸出
printf("%s",str);
2 C語言還支持專門的字符串輸入輸出函數(shù):gets/puts。
gets的作用為,讀入一行輸入,并將讀到的換行符替換為字符串結(jié)束符。
puts的作用為,將字符串單行輸出,即輸出字符串內(nèi)容后,會自動在結(jié)尾增加換行。
定義
char str[100];
輸入
gets(str);
輸出
puts(str);
擴展資料:
起初,C語言沒有官方標(biāo)準(zhǔn)。1978年由美國電話電報公司(ATT)貝爾實驗室正式發(fā)表了C語言。布萊恩·柯林漢(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本書,名叫《The C Programming Language》。
這本書被 C語言開發(fā)者們稱為KR,很多年來被當(dāng)作 C語言的非正式的標(biāo)準(zhǔn)說明。人們稱這個版本的 C語言為KR C。
KR C主要介紹了以下特色:
結(jié)構(gòu)體(struct)類型
長整數(shù)(long int)類型
無符號整數(shù)(unsigned int)類型
把運算符=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產(chǎn)生混淆。
即使在后來ANSI C標(biāo)準(zhǔn)被提出的許多年后,KR C仍然是許多編譯器的最 準(zhǔn)要求,許多老舊的編譯器仍然運行KR C的標(biāo)準(zhǔn)。
1970到80年代,C語言被廣泛應(yīng)用,從大型主機到小型微機,也衍生了C語言的很多不同版本。
1983年,美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)成立了一個委員會X3J11,來制定 C語言標(biāo)準(zhǔn)。
1989年,美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)通過了C語言標(biāo)準(zhǔn),被稱為ANSI X3.159-1989 "Programming Language C"。因為這個標(biāo)準(zhǔn)是1989年通過的,所以一般簡稱C89標(biāo)準(zhǔn)。有些人也簡稱ANSI C,因為這個標(biāo)準(zhǔn)是美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)發(fā)布的。
1990年,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)把C89標(biāo)準(zhǔn)定為C語言的國際標(biāo)準(zhǔn),命名為ISO/IEC 9899:1990 - Programming languages -- C? 。
因為此標(biāo)準(zhǔn)是在1990年發(fā)布的,所以有些人把簡稱作C90標(biāo)準(zhǔn)。不過大多數(shù)人依然稱之為C89標(biāo)準(zhǔn),因為此標(biāo)準(zhǔn)與ANSI C89標(biāo)準(zhǔn)完全等同。
1994年,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)發(fā)布了C89標(biāo)準(zhǔn)修訂版,名叫ISO/IEC 9899:1990/Cor 1:1994,有些人簡稱為C94標(biāo)準(zhǔn)。
1995年,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)再次發(fā)布了C89標(biāo)準(zhǔn)修訂版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity?[7]??,有些人簡稱為C95標(biāo)準(zhǔn)。
參考資料:百度百科-c語言
可以通過for循環(huán)來打印指定長度的字符(也即字符串的一部分)。 下面通過實例來說明具體的操作步驟: char *str="abcdefg"; // 定義一個字符串指針int i;for(i=2; i5; i++) // 控制需要輸出字符串的起始位置(下標(biāo)從0開始){ printf("%c", *(str+i)); // 以字符的形式輸出,輸出cde}