今天感觉过的有点迷,早上是电脑系统更新了一早上,下午是刚到了HDMI转VGA的数据线,一直想着尝试,感觉今儿的学习状态极差反正。今晚好好整理一波了,总归是要收获知识的。
1.关于putchar:
函数:int putchar ( int c )
功能是向终端输出一个字符,而这个参数呢,可以是变量,字符常量,整数常量或者是表达式,像putchar(65+32)之类的,感觉需要注意的就是putchar的返回值为成功输出字符所对应的ascii码,这个返回值似乎并没有什么用。
#include
int main(int argc, const char *argv[])
{
char a = 'P';
int ret = 0;
putchar('K'+32);
putchar('\n');
ret = putchar(65+32);
putchar(10);
putchar(a);
putchar(10);
printf("ret = %d\n",ret);
return 0;
}
2.getchar:
函数:int getchar (void )
功能是从终端获取一个字符,这个是没有参数的,返回的值就是成功获取的字符所对应的ascii码,不过有个细节,getchar一次只能获取你输入的一个字符,例如:
#include
int main(int argc, const char *argv[])
{
char ch;
ch = getchar();
printf("ch = %c\n",ch);
ch = getchar();
printf("ch = %c\n",ch);
return 0;
}
这是一个简单的从终端上获取一个字符给ch,然后把ch打印出来,在输入的时候无论你打多少个,它都只取第一个。
这时候第一个printf打印的是第一个,第二个printf打印的是第二个。
另外提一个,getchar()的作用是吃掉一个空格
3.printf:
格式:printf(“格式控制串”,输出表)
这估摸着也是最常用的输出语句了,就是按照指定的格式向显示器输出数据,列举了一下那些控制数据类型
%d //有符号十进制整数
%o //八进制
%x //十六进制
%u //无符号十进制整数
%c //字符
%f //浮点型 %.1f :小数后面保存一位(看清是 . 1 f)
%e //指数
%ld //long
%p //数据内存地址
%s //字符串,从给定的地址开始,到‘\0’结束输出
这还有个控制数据格式
M //数据输出宽度,比如%4d(小数前面不够4位,那就补空格嘛)
- //左对齐(默认是右对齐)
0 //空位补0
.N //对于浮点型,控制小数点位数,四舍五入
.N //对于字符串,输出数据的字符个数
%% //%
这期间有讲到了数组,数组就是若干个数据类型相同的元素集合
比如这个:
char a[10] = {‘A’,’B’,’C’,’D’,’\0’,’E’,’F’,’\0’};
又或者这个
char a[10] = {“ABCDERFDA”};
其实这两种写法是一样的。在数组里有个字符是 ‘\0’,这个是结束字符,你可以尝试着去打印a这个数组,你会发现只能显示ABCD,后面的就不会执行下去了,但如果你用sizeof去计算a这个数组的话,会显示a的内存大小为8,说明’ \ 0 ’ 是一个字符,但是一个有关键性作用的字符。
还有一点,就是在printf中,当控制数据类型是%s和%p的时候,后面那个输出表前面必须要加&(取地址符号)
4.scanf
函数:scanf(“格式控制串”,地址表);
功能:按指定格式从键盘读入数据,存入地址表指定存储单元中
返值:成功从终端获取数据的个数
这个函数和printf差不多,都用的特别多。有个有点意思的小例题。
char a[11]={“adsdasd”};
scanf(“%s”,&a[0]);
在上面,当程序运行到scanf的时候,你输入的值会把原来的数组a给代替掉(只要不超过数组a定义的长度就行)
#include
int main(int argc, const char *argv[])
{
char a[10] = {'A','B','C','E','F','G','\0'};
printf("a = %s\n",&a[0]);
scanf("%s", &a[0]);
printf("a = %s\n",&a[0]);
return 0;
}
5.puts
格式:int puts(char *s);
功能:向显示器输出字符串(输出完,换行)
说明:字符数组必须以‘\0’结束,默认会添加的。
这个能自动换行挺好的,不过只能输出字符型的,否则我就弃了printf的坑= =。
6.gets
格式:char * gets(char *s);
功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’
说明:输入串长度应小于字符数组维数
int main(int argc, const char *argv[])
{
char a[10] = {'a','b','c','d','\0'};
gets(&a[0]);
puts(&a[0]);
return 0;
}
这个gets和前面的scanf一样,把从键盘上获取到的值存入到数组a中,并替换掉原来的数据。
好了,差不多就这样了,明天周六,虽然说想着可以好好休息一下,但看着其他人早起来学习,自己可没法懒惰下去。明天加油,新的一天。