溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

%c與%s在C語言中的作用是什么

發(fā)布時(shí)間:2020-12-08 15:08:40 來源:億速云 閱讀:388 作者:Leah 欄目:開發(fā)技術(shù)

%c與%s在C語言中的作用是什么?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

%c格式對(duì)應(yīng)的是單個(gè)字符,%s格式對(duì)應(yīng)的是字符串。

例:

char a;
char b[20];
scanf("%c",&a); //只能輸入一個(gè)字符。
scanf("%s",b); //可以輸入一串不超過20字符的字符串。

%c對(duì)應(yīng)類型為char, %s對(duì)應(yīng)類型為char * , 即字符串.

用作輸入時(shí), 二者參數(shù)都要傳char * 型.

%c輸入函數(shù)只會(huì)對(duì)一個(gè)字節(jié)空間賦值. 而%s會(huì)一直賦值,直到輸入中遇到空白字符為止.

用作輸出時(shí), %c傳char類型,輸出一個(gè)字符. %s傳char*類型參數(shù), 輸出到\0為止.

%c只能輸出或輸入一個(gè)字符,%s輸出的是一串字符還有就是char a; string s;

輸入的時(shí)候scanf("%c", &a);這里的&不能少

而scanf("%s",s);這里不能有&符號(hào)

轉(zhuǎn)換說明符

   %a(%A)     浮點(diǎn)數(shù)、十六進(jìn)制數(shù)字和p-(P-)記數(shù)法(C99)
   %c       字符
   %d       有符號(hào)十進(jìn)制整數(shù)
   %f       浮點(diǎn)數(shù)(包括float和doulbe)
   %e(%E)    浮點(diǎn)數(shù)指數(shù)輸出[e-(E-)記數(shù)法]
   %g(%G)    浮點(diǎn)數(shù)不顯無意義的零"0"
   %i       有符號(hào)十進(jìn)制整數(shù)(與%d相同)
   %u       無符號(hào)十進(jìn)制整數(shù)
   %o       八進(jìn)制整數(shù)  e.g.   0123
   %x(%X)    十六進(jìn)制整數(shù)0f(0F)  e.g.  0x1234
   %p       指針
   %s       字符串
   %%       "%"

補(bǔ)充知識(shí):c語言中scanf("%c",&c)吃掉回車或者空格字符的問題

2`標(biāo)志

左對(duì)齊:"-" e.g. "%-20s"

右對(duì)齊:"+" e.g. "%+20s"

3.格式字符串(格式)

 〔標(biāo)志〕〔輸出最少寬度〕〔.精度〕〔長(zhǎng)度〕類型
 "%-md" : 左對(duì)齊,若m比實(shí)際少時(shí),按實(shí)際輸出。
 "%m.ns" : 輸出m位,取字符串(左起)n位,左補(bǔ)空格,當(dāng)n>m or m省略時(shí)m=n
 "%m.nf" : 輸出浮點(diǎn)數(shù),m為寬度,n為小數(shù)點(diǎn)右邊數(shù)位
 "%3.1f" :  輸入3852.99 輸出3853.0 

補(bǔ)充知識(shí):c語言中scanf("%c",&c)吃掉回車或者空格字符的問題

我就廢話不多說了,大家還是直接看代碼吧~

#include<stdio.h>
void main(){
 int a;
 char b; 
 
 printf("input a integer\n");
 scanf("%d",&a);
 //這里需要吸收 回車符 下面有種方法,第二種我沒看懂 誰能改下代碼 告訴我第二種怎么用
 printf("input a char\n");
 scanf("%c",&b); 
 printf("%d,%c\n",a,b); 
}
/*
(1)用getchar()清除
(2)用"%1s"來限制
(3)用格式串中空格或"%*c"來"吃掉"
(4)用函數(shù)fflush(stdin)清除全部剩余內(nèi)容
*/

下面使用第二種方法

#include<stdio.h>
int main(){ 
 
 int a;
 char b; 
 
 printf("input a integer\n");
 scanf("%d",&a);
 //這里需要吸收 回車符 下面有種方法,第二種我沒看懂 誰能改下代碼 告訴我第二種怎么用
 printf("input a char\n");
 scanf("%1s",&b); 
 
 printf("%d %c\n",a,b);
 system("pause");
 return 0; 
}

環(huán)境(dev c++)

測(cè)試結(jié)果

%c與%s在C語言中的作用是什么

可以看出a的值異常了,為什么呢?

這應(yīng)該和編譯器有關(guān)系,因?yàn)?1s的輸入方式的問題。

解決方法有兩種:

第一:

char b;

int a;

將這兩個(gè)變量的聲明換一下,哈哈,以前老師說過。但我感覺著不是解決方法,如果還有其他的變量,這種方式是不是還會(huì)危害其他呢。

第二:

#include<stdio.h>
int main(){ 
 
 int a;
 char b[2]; 
 
 printf("input a integer\n");
 scanf("%d",&a);
 //這里需要吸收 回車符 下面有種方法,第二種我沒看懂 誰能改下代碼 告訴我第二種怎么用
 printf("input a char\n");
 scanf("%1s",&b); 
 
 printf("%d %c\n",a,b[0]);
 system("pause");
 return 0; 
}

b聲明成字符創(chuàng)的形式,哈哈,這個(gè)好。。。。

結(jié)果為:

%c與%s在C語言中的作用是什么

看完上述內(nèi)容,你們掌握%c與%s在C語言中的作用是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI