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("
");

return OK;
}

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

运行结果:

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

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

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

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

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

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]=;
经验分享 程序员 微信小程序 职场和发展