数据类型(2)
来源:互联网 发布:python aes ecb 编辑:程序博客网 时间:2024/05/13 23:49
一、定义与声明的区别
二、格式化输入输出函数scanf()andprintf()
c语言中scanf()的垃圾处理问题
第一种解决方案:用getchar()清除
scanf("%d", &x);getchar();scanf("%c", &ch);
第二种解决方案:空格
scanf("%d", &x);scanf(" %c", &ch); // 注意空格
第三种解决方案:%*c
scanf("%d", &x);scanf("%*c%c",&ch);
键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到’\n ‘。要理解这一点,之所以你输入的一系列字符被依次读出来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一个字符。如果需要取消’ \n’的影响,可以用getchar();来清除,这里getchar();只是取得了’\n ‘但是并没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符。
getchar、scanf以及缓冲区的概念
三、怎么用scanf输入一个句子
scanf的结束标志是空格和回车键,而gets的结束标志为回车键,输入字符串时,一般采用gets
因此有下面两种方法可以在使用scanf时完整输入字符串:
1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。
Strcat()一般格式:char* strcat(char* dest,const char*src);
函数将字符串src连接到dest的尾端,并返回字符串dest的首指针。
#include “stdio.h” #include “string.h” void main() { char *str,*s1,*s2; clrscr(); / /清屏 scanf(“%s”,str); //输入字符串 scanf(“%s”,s1); //此后两个输入语句不需要用户进行输入 scanf(“%s”,s2); strcat(str,“”); //连接一个空格 strcat(str,s1); //连接单词 strcat(str,””); //连接一个空格 strcat(str,s2); //连接字符串 printf(“\n%s”,str); //输出字符串str }
2)利用格式符“%[]”它的作用为扫描字符集合。
scanf(“%[^c]”,str);
其中“c”是一个具体的字符常量(包括控制字符)。
当输入字符串时,字符“c”将被当作当前输入的结束符。
如同默认情况下空格和回车键以及TAB键是作为字符串输入的结束符一样,利用此格式符便相当于由编程者自己指定一个输入结束符。
#include”stdio.h” #include “conio.h” void main() { char *str; scanf(“%[^\n]”,str); //以换行符作为字符串输入的结束 printf(“\n%s”,str); }
- 数据类型(2)
- C# 数据类型 (2)
- erlang数据类型(2)
- IOS-常用数据类型(2)
- C++(2)基本数据类型
- redis(2)、redis数据类型
- Python(2):基本数据类型
- (2)python 基本数据类型
- 数据类型(2)类型转换
- 数据类型2
- 2-数据类型
- 数据类型2
- C++数据类型:基本数据类型 构造数据类型(自定义数据类型)
- mysql数据类型及列类型(2)
- Python 入门(2)--数据类型和变量
- 黑马程序员(C#2)之《数据类型》
- Perl简易教程(2) ---数据类型
- 数据类型/对象类型介绍(2)UINavigationController
- Content-Type Header Field
- .NET中各种数据库连接大全(2)
- Unity 关于资源加载的时间消耗
- 用例图
- IO模型
- 数据类型(2)
- C++ STL 常见用法
- hive优化
- C# int int16 Int32 Int64的介绍
- Java直接(堆外)内存使用详解
- 数据库中恢复挂机的方法
- codeforces 740B Alyona and flowers
- 泛型<T>
- Linux操作系统下部署python 机器学习开发环境