重新实现库函数

练习1:只用getchar函数读入一个整数。假设它占据单独的一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。

代码:

//改进方案  3.4.4-1 只用getchar函数读入一个整数。

#include <stdio.h>
 
int main()
{
    int c;
    int n=0;
    while ((c=getchar())!='
')
    {
        n=n*10+c-'0';
    }
    printf("%d",n);
    return 0;
}
#include<stdio.h>
int main()
{
    int sum,a[100],i;
    i=0;
    sum=0;
    while((a[i]=getchar())&&a[i]!='
')
    {
        sum=sum*10+a[i]-'0';
        i++;
    }
    printf("%d
",sum);
    return 0;
}

练习2:只用fgets函数读入一个整数。假设它占据单独的一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。

代码:

//读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。
//读入结束后,系统将自动在最后加' ',并以str作为函数值返回。
//函数原型是:char *fgets(char *s, int n, FILE *stream);
//stdin(Standardinput)标准输入
#include<stdio.h>
#include<string.h>
int main()
{
    int i,num=0;
    char s[100];
    fgets(s,strlen(s),stdin);//stdin表示用的不是指定文件的内容 而是自己输入的内容 
    for(i=0;i<strlen(s)-1;i++)
    {
        num=num*10+s[i]-'0';
    }
    printf("%d
",num);
    return 0;
}

练习3:只用getchar实现fgets的功能,即用每次一个字符的方式读取整行。

代码:

#include<stdio.h>
int main()
{
    int i;
    char s[100];
    i=0;
    while((s[i]=getchar())&&s[i]!='
')
    {
        i++;
    } 
    s[i]='