c语言输出字符数组出现汉字乱码解决方法

最近在完成数据结构作业,在代码过程中经常遇到一些小问题,比如在输出字符串数组时,在一串自己想要的字符后面经常会出现一些不知名的汉字乱码。

(这段代码是去除字符数组里面重复数组元素)

#include "header.h"
extern int CountLength(char name[],int len);

int DealArray(char num[]){
	printf("你输入的逻辑表达式的操作数(去除重复操作数):");
int v=0;
int g=CountLength(num,v);
int i,j,k,L;
	
for(i=0;i<g;i++)    //冒泡循环
{
    for(j=i+1;j<g;j++)
    {
        if(num[j]==num[i])    //如果发现重复
        {
            for(k=j+1;k<g;k++)
            {
                num[k-1]=num[k];    //将后面的数依次赋值给前一个位置
            }
            g--;    //数组长度-1
            j--;    //重复点再次进行查重
        }
    }
}

for(L=0;L<g;L++){
printf("%c",num[L]);
}
printf("\n");

return OK;
}

int main(){
	char n[]={'B','B','B','B','D','E'};
DealArray(n);
}


运行结果:

你输入的逻辑表达式的操作数(去除重复操作数):BDE虁

解决方法是在数组后面加一个'\0',数组结束符号

如果是在测试的话,在你自己输入的数组后面加一个'\0'数组元素

int main(){
	char n[]={'B','B','B','B','D','E','\0'};
DealArray(n);
}

如果是用for循环为数组赋值的话,记得在for循环结束后,为最后一个数组元素赋值'\0'

for(i=0;i<g;i++)    //冒泡循环
{
    for(j=i+1;j<g;j++)
    {
        if(num[j]==num[i])    //如果发现重复
        {
            for(k=j+1;k<g;k++)
            {
                num[k-1]=num[k];    //将后面的数依次赋值给前一个位置
            }
            g--;    //数组长度-1
            j--;    //重复点再次进行查重
        }
    }
}
num[g]='\0';

 

  • 15
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值