大佬们关于编辑字符时乱码问题

小干山 2020-10-26 10:39:58

为啥子会出现乱码?????
该怎么改????
#include<stdio.h>
#include<string.h>
int main()
{
char str[41]={1},con[5]={1};
int a,b,c,x,flag=0;
gets(str);
gets(con);

//删除
if(con[0]=='D')
{
for(a=0;str[a]!='\n';a++)
{
if(str[a]==con[2])
{
for(x=0;x<a;x++)
printf("%c",str[x]);
for(x=(a+1);str[x]!='\n';x++)
printf("%c",str[x]);
break;
}
if(str[a]=='.')
{
puts("Not exist");
break;
}
}
}
//插入
if(con[0]=='I')
{
for(a=40;a>=0;a--)
{
if(str[a]==con[2])
{
for(x=0;x<a;x++)
printf("%c",str[x]);
printf("%c",con[4]);
for(x=a;str[x]!='\n';x++)
printf("%c",str[x]);
break;
}
if(str[a]==str[0])
{
puts("Not exist");
break;
}

}
}
//替换
if(con[0]=='R')
{
for(a=0;str[a]!='\n';a++)
{
if(str[a]==con[2])
{
str[a]=con[4];
flag=1;
}
if(str[a]=='.')
{ if(flag==1)
{
for(x=0;str[x]!='\n';x++)
{printf("%c",str[x]);}break;
}
else
{
puts("Not exist");
break;
}
}
}
}
return 0;
}
...全文
98 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2020-10-27
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>

int main()
{
char str[41]={1},con[5]={1};
int a,b,c,x,flag=0;

gets(str);
gets(con);

//删除
if(con[0]=='D')
{
//for(a=0;str[a]!='\n';a++)
for(a=0;str[a]!='\0';a++)
{
if(str[a]==con[2])
{
for(x=0;x<a;x++)
printf("%c",str[x]);
//for(x=(a+1);str[x]!='\n';x++)
for(x=(a+1);str[x]!='\0';x++)
printf("%c",str[x]);
break;
}
if(str[a]=='.')
{
puts("Not exist");
break;
}
}
}
//插入
if(con[0]=='I')
{
for(a=40;a>=0;a--)
{
if(str[a]==con[2])
{
for(x=0;x<a;x++)
printf("%c",str[x]);
printf("%c",con[4]);
//for(x=a;str[x]!='\n';x++)
for(x=a;str[x]!='\0';x++)
printf("%c",str[x]);
break;
}
if(str[a]==str[0])
{
puts("Not exist");
break;
}

}
}
//替换
if(con[0]=='R')
{
for(a=0;str[a]!='\n';a++)
{
if(str[a]==con[2])
{
str[a]=con[4];
flag=1;
}
if(str[a]=='.')
{ if(flag==1)
{
//for(x=0;str[x]!='\n';x++)
for(x=0;str[x]!='\0';x++)
{
printf("%c",str[x]);
}
break;
}
else
{
puts("Not exist");
break;
}
}
}
}
return 0;
}

供参考~

乱码的原因是数组越界;使用gets函数接收输入的字符串,是不会把'\n'加到缓存(str)里的,因此在循环里判断'\n'是不会停止的,所以导致越界。

赵4老师 2020-10-27
  • 打赏
  • 举报
回复
system("chcp 437");

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧