我想把这些数字G234D45Te5634Y65A1234M30中A后面的数提出来:例如1234,也可以是任何1位到4位的数据,程序运行后 有乱码“汤烫?” 而且A后面数字不同乱码也不同,请问程序哪错了#include "iostream.h"
void   main()
{
char  n[3];
char data[50]="G234D45Te5634Y65A1234M";
int i=0,j=0,count=0;
for(int m=0;m<50;m++)
{
if(data[m]=='A')
{i=m+1; 
count=m;
for(i;i<count+5;i++)
{
if(data[i]>='0'&&data[i]<='9')
{ n[j]=data[i];
j++;
}          
}
      break;
}
    // break;
}
   cout<<n<<endl; 
}

解决方案 »

  1.   

    数组n太小了,存储不了4个字符,同时要初始化为0
    char n[5] = {0};
      

  2.   

    先memset一下
    因为字符串是要以0结尾,你放进去的字符数组不是以0结尾导致乱码
      

  3.   

    内存中默认值是 0xCC,如果不人工初始化成0的话, 0xCC0xCC对应的 "烫"
      

  4.   

    #include "iostream.h"void main()
    {
    char n[128]; //数组改的大些
    char data[50]="G234D45Te5634Y65A1234M";
    int i=0,j=0,count=0;
    for(int m=0;m<50;m++)
    {
    if(data[m]=='A')
    {
    i=m+1;  
    count=m; for(i;i<count+5;i++)
    {
    if(data[i]>='0'&&data[i]<='9')
    { n[j]=data[i];
    j++;
    }
    } m = --i; //重置m 初值
    n[j] = 0; //出现乱码的原因在这里,字符串没设置结束符号 break;

    }
      // break;
    }  cout<<n<<endl;  
    }
      

  5.   

    数组没有进行初始化,所以会出现乱码,自己手工初始化下,不要系统自动初始化,不同环境的IDE系统初始化也不同