最近在复习C语言字符串这一块知识点的时候,有几个知识点之前一直混淆了,今天通过网上查找资料在这里总结下我们平时对字符串的一些操作时scanf()、printf()、gets()、puts()之间的区别以及getchar()和putchar()的使用。
1.scanf()和 gets()之间的区别
两者都能接收字符串,且接受字符串的语法如下
scanf(“%s”,字符数组名或指针);
gets(字符数组名或指针);
不同点如下
scanf不能接受空格、制表符Tab、回车等;
gets能够接受空格、制表符Tab和回车等;gets()可接受回车键之前输入的所有字符并用’\0’替代 ‘\n’.回车键不会留在输入缓冲区中。
接下来我们通过输入字符串abc fgh来看看这两者的区别
1 2 3 4 5 6 | #include<stdio.h> int main() { char a[10]; scanf("%s",a); printf("%s",a); } |
输出结果如下(因为scanf()不接受空格,所以只会输出空格前面的字符)
1 2 3 4 5 6 | #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也是一种整数类型。
下面举个例子来看看这二者的用法
1 2 3 4 5 6 7 8 | #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个函数实现输入多个字符该怎么实现呢?举个例子当我们输入的字符为#就结束
1 2 3 4 5 6 7 8 9 10 | #include<stdio.h> int main() { char ch; printf("请输入字符串,以#结束:\n"); ch = getchar(); while(ch != '#'){ putchar(ch);//输出一个字符 ch = getchar();//读入一个字符 } } |
运行结果如下