加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言:给数组赋值时,为什么会出现乱码(数组使用必读)

(2011-07-08 14:37:45)
标签:

c语言

数组赋值

乱码

it

分类: ■C语言

我们先看一个简单的例子:

#include<stdio.h>
void main()
{
 char a[4];
 a[0]='a';
 a[1]='b';
 printf("%s\n",a);
}

照理说,该程序运行的结果是:ab

可是,实际上它的运行结果是:(下图)

http://s8/middle/63c66eb6xaa2588497027&690

在ab的后面跟了一些乱码!原因是没给a[2]和a[3]赋值,因此系统会任意给些乱码!

那么这个问题怎么解决呢?

以下是我总结的两种使用方案:

Case1:给数组初始化,赋空值(这是最好用的)

#include<stdio.h>
void main()
{
 char a[4]={'\0'}; //就是在这里做手脚。适用于任何N维数组(不管是字符型,还是整型)
 a[0]='a';
 a[1]='b';
 printf("%s\n",a);
}

 Case2:在每维数组的后面赋'\0'值,这种方法人工干涉多,容易出错,现在基本不用了。

#include<stdio.h>
#include<string.h>
#define N 2
void main()
{
 char input[100],comp,saveString[N][100]={'\0'},saveComp[N];
int count,i,j=0,k;
printf("Sample Input\n");
for(count=0;count<N;count++)
{
k=0;
fflush(stdin); 
gets(input);
comp=getchar();
for(i=0;i<strlen(input);i++)
if(comp!=input[i])
{
saveString[j][k]=input[i];
k++;
}
saveString[j][k]='\0'; //将每一维数组的最后一个元素赋值为结束'\0',以保证数组顺利赋值
j++;
}
printf("Sample Output\n");
for(i=0;i<N;i++)
puts(saveString[i]);
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有