只用getchar实现fgets功能

接触C语言已经很久很久了,一直没有摆脱菜鸟的身份,没别的原因:见得少,练得少,想得少。比如getchar和fgets,最近才熟悉它们。
getchar()函数功能:读取一个字符;
fgets()函数功能:读取一行数据;
但是仅仅理解到这个程度是不够的,比如遇到这样的几行代码:
...
char a;
a=getchar();
printf("%c",a);
...
如上,如果你在控制台里(就是那个黑框框)里输入老长一段字符串,说得专业点,你向stdin这个流中装入字符串,比如woshicainiao最后回车键结束输入,当执行到a=getchar();时,getchar()函数只从stdin中读取第一个字符‘w’,并赋值给a,因为这条语句只执行了一次,所以读取完第一个字符后就执行下一条printf语句,将a打印出来,注意:此时stdin这个流仍然存在,但是读指针自动向后移了一位,也就是说,如果printf语句后面再来一条a=getchar();语句,此时a应被赋值为‘o’。不信你可以试试,其中奥妙,自己慢慢体会哈。我睡觉去了。。。
慢着,fgets读取一整行字符(读到回车符结束,或者叫‘\n’,又或者用ascii表示为0x0a,对于计算机来说,他们是同一个东西,只不过是一层一层地抽象)。
下面的代码用getchar函数简单实现了fgets功能,

#include "stdafx.h"
#include 
   
   
    
    

#define MAXNUM 1000
char a[MAXNUM];

void fgets_my(char *a,int maxnum,FILE *fin)
{
	int i;
	for (i=0;i
    
    
   
   


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值