
C语言中重新实现库函数
1,只用getchar函数读入一个整数。假设它占单独一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。2,只用fgets函数读入一个整数。假设它占单独...
1,只用getchar函数读入一个整数。假设它占单独一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。
2,只用fgets函数读入一个整数。假设它占单独一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。
3,只用getchar实现fgets的功能,即用每次一个字符的方式读取整行。
4,实现strchr的功能,即在一个字符串中查找一个字符。
5,实现isalpha和isdigit的功能,即判断字符是否为字母/数字。
希望会的网友能给出你的答案。。我是新手。。。不会实现 额。。。 展开
2,只用fgets函数读入一个整数。假设它占单独一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。
3,只用getchar实现fgets的功能,即用每次一个字符的方式读取整行。
4,实现strchr的功能,即在一个字符串中查找一个字符。
5,实现isalpha和isdigit的功能,即判断字符是否为字母/数字。
希望会的网友能给出你的答案。。我是新手。。。不会实现 额。。。 展开
1个回答
展开全部
fgets是从文件读取,getchar是从输入读取,两个还是有区别的
怀疑是gets
如果一定要用fgets的话,那么可以先用freopen重定向输入,来使fgets和getchar的定向相同
以下用gets实现或者被实现
含测试函数main
#include <stdio.h>
int str_to_int(char *str)
{
int sign = 1;
int ret = 0;
char *p;
p = str;
if(*p == '+') p++;
else if(*p == '-') sign = -1, p ++;
while(*p)
{
if(*p >= '0' && *p <= '9')
ret = ret * 10 + (*p - '0');
else break;
p ++;
}
return sign * ret;
}
int get_int_with_getchar()
{
char a[20] = {0};
int i = 0;
while(i<19)
{
a[i] = getchar();
if(a[i] == '\n')
break;
i ++;
}
a[i] = 0;
return str_to_int(a);
}
int get_int_with_gets()
{
char a[20] = {0};
gets(a);
return str_to_int(a);
}
void gets_with_getchar(char *str)
{
int i = 0;
if(str == NULL) return;
do
{
str[i] = getchar();
}while(str[i++] != '\n' );
}
char *do_strchr(char *src, const char c)
{
char *p = src;
while(*p && *p!= c) p ++;
if(*p != c) return NULL;
return p;
}
int do_isdigit(char c)
{
return c <= '9' && c >= '0';
}
int do_isalpha(char c)
{
return (c <= 'Z' && c >= 'A') || (c <= 'z' && c >= 'a');
}
int main()
{
int a;
char test[100] ;
a = get_int_with_getchar();
printf("get_int_with_getchar = %d\n", a);
a = get_int_with_gets();
printf("get_int_with_gets = %d\n", a);
gets_with_getchar(test);
printf("gets_with_getchar = %s\n", test);
printf("do_strchr %s %s\n", do_strchr(test, 'a'), do_strchr(test, 'b'));
printf("do_isdigit = (%d,%d) \n", do_isdigit('1'), do_isdigit('a'));
printf("do_isalpha = (%d,%d) \n", do_isalpha('1'), do_isalpha('a'));
}
怀疑是gets
如果一定要用fgets的话,那么可以先用freopen重定向输入,来使fgets和getchar的定向相同
以下用gets实现或者被实现
含测试函数main
#include <stdio.h>
int str_to_int(char *str)
{
int sign = 1;
int ret = 0;
char *p;
p = str;
if(*p == '+') p++;
else if(*p == '-') sign = -1, p ++;
while(*p)
{
if(*p >= '0' && *p <= '9')
ret = ret * 10 + (*p - '0');
else break;
p ++;
}
return sign * ret;
}
int get_int_with_getchar()
{
char a[20] = {0};
int i = 0;
while(i<19)
{
a[i] = getchar();
if(a[i] == '\n')
break;
i ++;
}
a[i] = 0;
return str_to_int(a);
}
int get_int_with_gets()
{
char a[20] = {0};
gets(a);
return str_to_int(a);
}
void gets_with_getchar(char *str)
{
int i = 0;
if(str == NULL) return;
do
{
str[i] = getchar();
}while(str[i++] != '\n' );
}
char *do_strchr(char *src, const char c)
{
char *p = src;
while(*p && *p!= c) p ++;
if(*p != c) return NULL;
return p;
}
int do_isdigit(char c)
{
return c <= '9' && c >= '0';
}
int do_isalpha(char c)
{
return (c <= 'Z' && c >= 'A') || (c <= 'z' && c >= 'a');
}
int main()
{
int a;
char test[100] ;
a = get_int_with_getchar();
printf("get_int_with_getchar = %d\n", a);
a = get_int_with_gets();
printf("get_int_with_gets = %d\n", a);
gets_with_getchar(test);
printf("gets_with_getchar = %s\n", test);
printf("do_strchr %s %s\n", do_strchr(test, 'a'), do_strchr(test, 'b'));
printf("do_isdigit = (%d,%d) \n", do_isdigit('1'), do_isdigit('a'));
printf("do_isalpha = (%d,%d) \n", do_isalpha('1'), do_isalpha('a'));
}
追问
。。。。太麻烦你了写那么多程序了。。。。但是好复杂0.0.。。书上是每一条都是分开的 不是要在一个程序里面实现,是要在五个程序里实现。。。只是是简单的让我练习一下。您能根据那五条编五个简单的程序么。。。我再加二十分吧。。太麻烦你了
追答
这样就是五个了
每个这样的注释行分隔一个程序
//
#include
int str_to_int(char *str)
{
int sign = 1;
int ret = 0;
char *p;
p = str;
if(*p == '+') p++;
else if(*p == '-') sign = -1, p ++;
while(*p)
{
if(*p >= '0' && *p
int str_to_int(char *str)
{
int sign = 1;
int ret = 0;
char *p;
p = str;
if(*p == '+') p++;
else if(*p == '-') sign = -1, p ++;
while(*p)
{
if(*p >= '0' && *p <= '9')
ret = ret * 10 + (*p - '0');
else break;
p ++;
}
return sign * ret;
}
int get_int_with_gets()
{
char a[20] = {0};
gets(a);
return str_to_int(a);
}
int main()
{
int a;
a = get_int_with_gets();
printf("get_int_with_gets = %d\n", a);
}
先发第一个和第二个,字数限制
你再追问一次,我把剩下三个发上来
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询