只用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


你可能感兴趣的:(算法竞赛入门经典,习题答案)