原文鏈接: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”
編程學習書籍:

編程學習視頻:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236881.html
標籤:C
上一篇:樹狀陣列及應用
下一篇:新人問JPA問題
