首頁 > 軟體

C語言中%c與%s的區別與劃分詳解

2020-12-07 18:03:18

%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*型別引數, 輸出到為止.

%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 integern");
 scanf("%d",&a);
 //這裡需要吸收 回車符 下面有種方法,第二種我沒看懂 誰能改下程式碼 告訴我第二種怎麼用
 printf("input a charn");
 scanf("%c",&b); 
 printf("%d,%cn",a,b); 
}
/*
(1)用getchar()清除
(2)用"%1s"來限制
(3)用格式串中空格或"%*c"來"吃掉"
(4)用函數fflush(stdin)清除全部剩餘內容
*/

下面使用第二種方法

#include<stdio.h>
int main(){ 
 
 int a;
 char b; 
 
 printf("input a integern");
 scanf("%d",&a);
 //這裡需要吸收 回車符 下面有種方法,第二種我沒看懂 誰能改下程式碼 告訴我第二種怎麼用
 printf("input a charn");
 scanf("%1s",&b); 
 
 printf("%d %cn",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 integern");
 scanf("%d",&a);
 //這裡需要吸收 回車符 下面有種方法,第二種我沒看懂 誰能改下程式碼 告訴我第二種怎麼用
 printf("input a charn");
 scanf("%1s",&b); 
 
 printf("%d %cn",a,b[0]);
 system("pause");
 return 0; 
}

b宣告成字元創的形式,哈哈,這個好。。。。

結果為:

以上這篇C語言中%c與%s的區別與劃分詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com