http://blog.csdn.net/pipisorry/article/details/41219551
C语言基本输入输出
标准输入scanf
scanf("%s", a);
C语言字符串读取数据sscanf
sscanf() - 从一个字符串中读进与指定格式相符的数据。
swscanf()- 用于处理宽字符字符串。和sscanf功能同样。
c++用代码如何实现向输入缓冲区写入数据
未解决?
C语言基本输出printf()
printf函数的返回值
http://www.360doc.com/content/11/1105/23/1317564_162120554.shtml
C语言字符串输出sprintf()
将各种类型的数据构造成字符串
sprintf 跟printf 在使用方法上差点儿一样,仅仅是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。
sprintf 是个变參函数,定义例如以下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个參数类型固定外。后面能够接随意多个參数。而它的精华,显然就在第二个參数格式化字符串上。
非格式化输入输出puts()gets()函数
能够由上面讲述的标准格式化输入输出函数取代, 但这些函数编译后代码少, 相对占用内存也小, 从而提高了速度, 同一时候使用也比較方便。
1. puts()函数
puts()函数用来向标准输出设备(屏幕)写字符串并换行,
调用格式为: puts(s);
当中s为字符串变量(字符串数组名或字符串指针)。
puts()函数的作用与语printf("%s ", s)同样。
- main() {
- char s[20], *f;
- strcpy(s, "Hello world!"); /*字符串数组变量赋值*/
- f="Thank you"; /*字符串指针变量赋值*/
- puts(s);
- puts(f);
- }
说明:
(1). puts()函数仅仅能输出字符串, 不能输出数值或进行格式变换。
(2). 能够将字符串直接写入puts()函数中。如:puts("Hello, Turbo C2.0");
2. gets()函数
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。
调用格式为: gets(s);
当中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s", &s)类似, 但不全然同样, 使用scanf("%s", &s)函数输入字符串时存在一个问题, 就是假设输入了空格会觉得输入字符串结束,
空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。
- main(){
- char s[20], *f;
- printf("input sth ");
- gets(s); /*等待输入字符串直到回车结束*/
- puts(s); /*将输入的字符串输出*/
- puts("input sth ");
- gets(f);
- puts(f);
- }
c语言中读入带空格的字符串
问题:
scanf("%s", a);
执行输入hello world
回车
则输入到a的仅仅是空格之前的部分,如何把空格之后的部分也输出?
1. scanf( "%[^
]", str );
#include <stdio.h> int main(){ char str[50]; scanf( "%[^
]", str ); printf( "%s
", str ); return 0; }
scanf中的正則表達式
1、定制自己的扫描集 %[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。
int i;
char str[80], str2[80];
// scanf("%d%[abc]%s", &i, str, str2);
// printf("%d %s %s
",i,str,str2);
// scanf("%[a-zA-Z0-9]", str);
// scanf("%[^abce]", str);
scanf("%[^a-z]", str);
printf("%s
",str);
2、读入一个地址并显示内存地址的内容
int main(void){
char ch='c';
printf("%p
", &ch); // print the address of ch.
char *p;
cout<<"Enter an address: ";
scanf("%p", &p); //input the address displayed above
printf("Value at location %p is %c
",p,*p);
return 0;
}
3、丢弃不想要的空白符:scanf("%c %c");
4、控制字符串中的非空白符:导致scanf()读入并丢弃输入流中的一个匹配字符。
"%d。%d";
5、压缩输入:在格式码前加上*,则用户就能够告诉scanf()读这个域,但不把它赋予不论什么变量。
scanf("%c%*c, &ch); 使用此方法能够在字符处理时吃掉多余的回车。
2.scanf()
int t[999];
int sum=0;
while(scanf("%c",&t[sum++])!=EOF);
3.gets()fgets()
#include <stdio.h>
//char *fgets( char *str, int num, FILE *stream );
int main(){
char buffer[10];
//fgets(buffer,10,stdin); //带有回车符
gets(buffer); //没有回车符
printf("%s",buffer);
return 0;
}
more:
gets() 不检查字符串容量,有可能越界写数据,用户可不一定给你按套路出牌。可能输入长达300字节甚至2k字节的字符串,这种话非常危急
尽管strlen。strcyp等等这些函数由于追求高效率也不会检查指针是否为空,指针是否可写。可是这些函数是C程序猿来操作的。C程序猿有正确使用函数的素养。
可是gets() 是用户来输入,用户并不知道字符串上限,并且就算知道。也不一定有素养去按规定使用,要多多注意
用fgets(str,80,stdin);就不危急了,fgets比較安全
c语言文件读取和输入输出
C语言文件读取fscanf()
函数名: fscanf
简述:C语言中主要的文件操作
功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有差别,fgets遇到空格不结束。
使用方法:
1 | int fscanf(FILE*stream,constchar*format,[argument...]); |
1 2 3 4 5 | FILE*fp; chara[10]; intb; doublec; fscanf(fp,"%s%d%lf",a,&b,&c) |
格式字符说明
经常使用基本參数对比:
%d:读入一个十进制整数.
举个样例:假设格式字符为“%s+%d”,那么參数的输入就应该为 string + integer。
http://baike.baidu.com/view/656694.htm
皮皮blog
C语言控制台字体颜色设置
一、设置字体颜色:
1. 0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
#include <stdlib.h>
system("color 2");system("color F");
2.
VC中要调用windows API来改变字体颜色。
#include <windows.h>
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
printf("Hello
");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED);
printf("Hello
");
当中FOREGROUND颜色仅仅有四种:GREEN,BLUE。RED,INTENSITY(加强)
WinCon.h:
#define FOREGROUND_BLUE 0x0001 // text color contains blue.
#define FOREGROUND_GREEN 0x0002 // text color contains green.
#define FOREGROUND_RED 0x0004 // text color contains red.
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define BACKGROUND_BLUE 0x0010 // background color contains blue.
#define BACKGROUND_GREEN 0x0020 // background color contains green.
#define BACKGROUND_RED 0x0040 // background color contains red.
#define BACKGROUND_INTENSITY 0x0080
其它颜色都是基于红绿蓝三原色来调和而成:
红色+绿色=黄色
绿色+蓝色=青色
红色+蓝色=品红
红色+绿色+蓝色=白色
ref:cin、cin.get()、cin.getline()、getline()、gets()函数的使用方法