C语言的输入与输出

今天感觉过的有点迷,早上是电脑系统更新了一早上,下午是刚到了HDMI转VGA的数据线,一直想着尝试,感觉今儿的学习状态极差反正。今晚好好整理一波了,总归是要收获知识的。

1.关于putchar:
函数:int putchar ( int c )
功能是向终端输出一个字符,而这个参数呢,可以是变量,字符常量,整数常量或者是表达式,像putchar(65+32)之类的,感觉需要注意的就是putchar的返回值为成功输出字符所对应的ascii码,这个返回值似乎并没有什么用。

#include<stdio.h>
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 <stdio.h>
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 <stdio.h>
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中,并替换掉原来的数据。

好了,差不多就这样了,明天周六,虽然说想着可以好好休息一下,但看着其他人早起来学习,自己可没法懒惰下去。明天加油,新的一天。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值