练习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]='