编写函数output和input,其功能分别于gets和puts相同,函数中用getchar和purchar读入和输出字符

如题所述

第1个回答  2019-12-16
#include

#define
max
50
char*
input(int
m,char
ch[max])
{
int
i;
for(i=0;i<=m;i++)
ch[i]=getchar();
return
ch;
}
void
output(int
m,char
ch[max])
{
int
i;
for(i=0;i<=m;i++)
putchar(ch[i]);
printf("\n");
}
void
main()
{
int
m;
char
ch[max],*tm;
printf("请输入字符串中字符的个数:");
scanf("%d",&m);
printf("请输入字符串:");
tm=input(m,ch);
output(m,tm);
}
第2个回答  2019-12-16
//编写函数output和input,其功能分别于gets和puts相同,函数中用getchar和purchar读入和输出字符
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<conio.h>//包含getch()函数
//系统的gets()函数没有判断输入字符个数是否超过接收缓冲区buf的大小.
//同样,我们这里也不判断
char
*input(char
*buf)
{
char
c
=
0;
char
*pSaveWork
=
buf;
while
(
true
)
{
fflush(stdin);
c
=
getch();
if
(
c
==
'\r'
||
c
==
'\n'
)
{
putc('\n',stdout);
fflush(stdout);
break;
}
putc(c,stdout);
fflush(stdout);
*pSaveWork
=
c;
pSaveWork++;
}
*pSaveWork
=
0x0;
return
buf;
}
int
output(const
char
*str)
{
if
(
NULL
==
str
)
{
return
-1;
}
int
rtv
=
strlen(str);
char
*pWork
=
(char
*)str;
while(
*pWork
!=
'\0')
{
putchar(*pWork);
pWork++;
}
return
rtv;
}
int
main(void)
{
char
str[100];
memset(str,0x0,sizeof(str));
input(str);
output(str);
getchar();
return
0;
}
相似回答
大家正在搜