c程序 字符数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 18:19:59
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void main()
{
char a[50];
scanf("%s",a);
int i;
for(i=0;i<50;i++)
{
if(isdigit(a[i])==0)
printf("%c",a[i]);
}
}

为啥输入数据运行后会有乱码勒?

#include<stdio.h>
#include<string.h>
#include<ctype.h>
void main()
{
char a[50];
scanf("%s",a);
int i,m;
m=strlen(a);
for(i=0;i<m+1;i++)
{
if(isdigit(a[i])==0)
printf("%c",a[i]);
}
}
改成上面的就行了,因为你输入的数组长度比50小的话,后面的数组元素没有赋值,因此会有乱码。
比如说你输入了10个字符,那么第11个是结束标志,而你的输出却是50个元素,后面的没有赋值就成了乱码。我给你加的m就是计算你实际输入的长度,输出到m个元素结束。