最近在複習C語言字符串這一塊知識點的時候,有幾個知識點之前一直混淆了,今天通過網上查找資料在這裏總結下我們平時對字符串的一些操作時scanf()、printf()、gets()、puts()之間的區別以及getchar()和putchar()的使用。
1.scanf()和 gets()之間的區別
兩者都能接收字符串,且接受字符串的語法如下
scanf(“%s”,字符數組名或指針);
gets(字符數組名或指針);
不同點如下
scanf不能接受空格、製表符Tab、回車等;
gets能夠接受空格、製表符Tab和回車等;gets()可接受回車鍵之前輸入的所有字符並用’\0’替代 ‘\n’.回車鍵不會留在輸入緩衝區中。
接下來我們通過輸入字符串abc fgh來看看這兩者的區別
#include<stdio.h>
int main() {
char a[10];
scanf("%s",a);
printf("%s",a);
}
輸出結果如下(因爲scanf()不接受空格,所以只會輸出空格前面的字符)
#include<stdio.h>
int main() {
char a[10];
gets(a);
printf("%s",a);
}
輸出結果如下
2.printf()和puts()的區別
二者都能輸出字符串,不同之處就是puts()在輸出字符串時會將’\0’自動轉換成’\n’進行輸出,也就是說,puts方法輸出完字符串後會自動換行。
3. getchar()和putchar()的使用
兩個函數的聲明分別爲:
int getchar(void);
int putchar(int _Character);
這兩個函數就是用來獲取和顯示字符的,並且每次只能處理一個字符。這裏應注意,char也是一種整數類型。
下面舉個例子來看看這二者的用法
#include<stdio.h>
int main() {
int i;
i=getchar();//相當於char i;scanf("%c",&i);
putchar(i);//相當於printf("%c",i); 需要i是字符才能輸出不能是變量
printf("\n");
printf("%d",i);//輸出字符的ASCII值
}
運行結果如下
如果我們想通過這2個函數實現輸入多個字符該怎麼實現呢?舉個例子當我們輸入的字符爲#就結束
#include<stdio.h>
int main() {
char ch;
printf("請輸入字符串,以#結束:\n");
ch = getchar();
while(ch != '#'){
putchar(ch);//輸出一個字符
ch = getchar();//讀入一個字符
}
}
運行結果如下