隔行如隔山!%c與%s,只有程序員才懂的C語言符號!


原文鏈接:https://blog.csdn.net/zhgl7688

這篇文章主要介紹了C語言中%c與%s的區別與划分詳解,希望對大家有所幫助。一起跟隨小編過來看看吧!


 

%c格式對應的是單個字符,%s格式對應的是字符串。

例:

char a;

char b[20];

scanf("%c",&a); //只能輸入一個字符。

scanf("%s",b); //可以輸入一串不超過20字符的字符串。

%c對應類型為char, %s對應類型為char * , 即字符串.

用作輸入時, 二者參數都要傳char * 型.

%c輸入函數只會對一個字節空間賦值. 而%s會一直賦值,直到輸入中遇到空白字符為止.

用作輸出時, %c傳char類型,輸出一個字符. %s傳char*類型參數, 輸出到\0為止.

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

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

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

轉換說明符

%a(%A) 浮點數、十六進制數字和p-(P-)記數法(C99)

  %c      字符

  %d      有符號十進制整數

  %f      浮點數(包括float和doulbe)

  %e(%E)    浮點數指數輸出[e-(E-)記數法]

  %g(%G)    浮點數不顯無意義的零"0"

  %i      有符號十進制整數(與%d相同)

  %u      無符號十進制整數

  %o      八進制整數  e.g.  0123

  %x(%X)    十六進制整數0f(0F)  e.g.  0x1234

  %p      指針

  %s      字符串

  %%      "%"

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

2`標志

左對齊:"-" e.g. "%-20s"

右對齊:"+" e.g. "%+20s"

3.格式字符串(格式)

〔標志〕〔輸出最少寬度〕〔.精度〕〔長度〕類型

"%-md" : 左對齊,若m比實際少時,按實際輸出。

"%m.ns" : 輸出m位,取字符串(左起)n位,左補空格,當n>m or m省略時m=n

"%m.nf" : 輸出浮點數,m為寬度,n為小數點右邊數位

"%3.1f" :  輸入3852.99 輸出3853.0

補充知識: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)用函數fflush(stdin)清除全部剩余內容

*/

下面使用第二種方法

#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;

}

環境(dev c++)

測試結果


 

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

這應該和編譯器有關系,因為%1s的輸入方式的問題。

解決方法有兩種:

第一:

char b;

int a;

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

第二:

#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聲明成字符創的形式,哈哈,這個好。。。。

結果為:


 

以上這篇C語言中%c與%s的區別與划分詳解就是小編分享給大家的全部內容了,有什么問題歡迎評論區留言。

 


 

最后,如果你也想成為程序員,想要快速掌握編程,趕緊加入學習企鵝圈子

里面有資深專業軟件開發工程師,在線解答你的所有疑惑~編程語言入門“so easy”

編程學習書籍:


 

編程學習視頻:


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM