请编写函数mygets和myputs,其功能分别与gets与puts相同,函数中用getchar和putchar读入和输出字符。

我的运行结果:无论我输入什么都会出现这行奇怪的中文。请帮忙看看代码哪儿错了,谢谢!

我的代码:
#include <stdio.h>
#include <ctype.h>

void mygets(char *a)
{
while((*a=getchar())!='\n'){a++;*a='\0';}
}
void myputs(char *a)
{
while(*a){ putchar(*a);a++;}
}
main()
{
char a[50];
mygets(a);
myputs(a);

}
我知道了出现问题的原因了。
while((*a=getchar())!='\n'){a++;*a='\0';}把这一行后面的中括号去掉就正常了。

我试过了,你把第一个while里面的 *a='\0'放在while的外面,就不会出现这种情况,但是具体原因我还不知道,理论上来说你这样写也是没有问题的,如果你找到原因的话,请记得告诉我哦!
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言中请编写函数mygets和myputs,其功能分别与gets与puts相同,函数中...
include <stdio.h> char *mygets(char str[]) {int ch,i = 0;while(1) {ch = getchar();if(ch == -1) return NULL;if(ch == '\\n') {str[i] = '\\0';break;}str[i] = ch;++i;}return str;}int myputs(char *str) {int i,retval,cnt = 0;for(i = 0; str[i]...

请编写函数mygets和myputs,其功能分别与gets和puts相同,函数中用getc...
include<stdio.h> void main(void) { char *input(char*); int output(char*); char str[80]; input(str); output(str); return; } char *input(char *str) { int i; char ch; for(i=0;(ch=getchar())!='\\n';i++) str[i]=ch; str[i]='\\0'; retu...

用C语言:写一个函数,将两个字符串连接
='\\0'){ a[i++]=b[j++];} a[i]='\\0'; }int main(){char a[100],b[100];gets(a);gets(b);mystrcat(a,b);puts(a); return 0;}\/*运行结果:abcdefabcdef*\/

相似回答
大家正在搜