求助c语言问题

这段程序能正常编译运行,但是在我输入abc之类的之后,puts输出的都是乱码有大神帮我看一下原因吗,感激不尽#include<stdio.h>char*xgets(int... 这段程序能正常编译运行,但是在我输入abc之类的之后,puts输出的都是乱码
有大神帮我看一下原因吗,感激不尽
#include<stdio.h>
char * xgets(int b);
int main(void)
{
int z=14;
puts("please enter");
puts(xgets(z));
return 0;
}
char * xgets(int b)
{
char x[14];
char * p=x;
if(fgets(p,b,stdin))
{
while(*p!='\n'&&*p!='\0')
p++;
if(*p=='\n')
*p='\0';
else
while(getchar()!='\n')
continue;
}
return x;}

#include<stdio.h>
char * taxt(int);
int main(void)
{
int a,b;
char * i;
puts("请输入数量");
scanf("%d",&a);
i=taxt(a);
b=0;
while(b<a)
{
if(i[b]=='\n')
putchar('\\n');
else if(i[b]=='\0')
putchar('\\0');
else putchar(i[b]);
b++;
}
return 0;
}
char * taxt(int n)
{
char i[n+1];
int a=0;
while(a<n)
{
i[a]=getchar();
a++;}
i[a]='\0'
return i;
}
展开
 我来答
jayhou1986
2019-07-31 · TA获得超过1510个赞
知道小有建树答主
回答量:586
采纳率:81%
帮助的人:413万
展开全部

scanf("%d",&a); a是整型,你输入字符串肯定不对,可以判断一下scanf的返回值,如果是返回0,说明输入的不是整数,可以再重新输入,具体处理代码可以参考我另一个问题的回答答案,链接地址如下

网页链接

更多追问追答
追问
说错了...是在随便输入一个数字之后输入abc,puts输出不对
追答

char * taxt(int n)这个函数你返回的是里面局部变量char数组,这个数组在函数return后就不存在了,可以改一下:

这行

char i[n+1];

改成

char* i = (char*)malloc(n+1);

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式