C语言的I/O函数

int getchar(void);  //返回来自输入设备的下一个字符
int putchar(int ch);  //打印它的参数(不带回车换行)
例如:

char c = getchar();
putchar(c);

getchar和putchar仅处理字符,因此它们比通用的scanf和printf更快而且更简洁


char *gets(char *str);  //从标准输入获得一个字符串,将其传给参数
int puts(const char *str);  //从标准输出打印参数字符串
若正确读取的话,gets会返回所获得字符串的地址。若读取错误,则返回NULL。

例如:

char s1[80];
char * s2;
s2 = gets(s1);		//s1 == s2,s2只能是char指针,不能是数组名

Tips:gets会自动丢弃末尾的换行符

Tips:与printf不同,puts会自动加回车换行


int scanf(const char *format, …);
返回正确读入变量的个数;若输入EOF,则返回-1

scanf与gets的区别在于,scanf更基于获得单词而不是获取字符串,也就是说scanf以遇到的第一个非空白字符开始,到第一个空白字符结束。如:

char str[80];
scanf("%s", str);	//若输入"  hello world",则str的值仅为"hello"

而gets会原模原样的输入


看下面这个例子,理解上面提到的几个I/O函数的用法

int main(){
  char c;
        char s[80];
        while((c = getchar()) != EOF){        //若输入EOF则结束
                putchar(c);
        }
        puts("End of getchar&putchar"); //puts()会自动加回车换行
        while(gets(s) != NULL){        //输入错误则gets()返回NULL
                puts(s);
        }
        puts("End of gets&puts");
        while(fgets(s, 80, stdin) != NULL){        //输入错误则fgets()返回NULL
                fputs(s, stdout);
        }
        fputs("End of fgets&fputs\n", stdout);        //fputs()不会自动加回车换行,因此要自己加上\n
        return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值