1令牌未存储在我的阵列中

时间:2015-05-10 13:39:59

标签: arrays parsing ascii stringtokenizer

#include <iostream>
#include<string.h>
#include<cstring>
#include<ctype.h>

using namespace std;

char *Data1[100];
char *operators[20];
char *identifiers[20][20];
int *ascii[100] = {0};
int ascii2[100] = {0};
unsigned int Tcount = 0;
unsigned int i;

int main(void)
{
    char *text = (char*)malloc ( 100 *sizeof( char));
    cout << "Enter the first arrangement of data." << endl;
    cin.getline(text, 100);
    char *token = strtok(text, " ");
    while ( token != NULL )
    {
        token = strtok(NULL, " ");
        Data1[Tcount] = token;
        cout<< Data1[Tcount] << endl;
        Tcount++;

    }
    for(i=0; i < Tcount; i++)
    {

        ascii[i] = (int)Data1[i];

//从指针转换为较小的类型&#39; int&#39;丢失信息错误

        cout << ascii[i] << endl;
    }


    return 0;
}

我首先尝试将令牌存储在名为&#39; Data1&#39;的数组中。这样做时,我输入数据&#39; X = A + 1&#39;进入用户输入。由于某种原因,第一个令牌(X)没有存储在数组中,所以我的第一个问题是如何解决这个问题 其次,我试图使用存储在数组中的这些标记并将它们转换为ASCII,以便它们可用于解析。我收到一个错误&#34;从指针转换为较小的类型&#39; int&#39;丢失信息&#34; 我想知道是否有人知道如何解决这些问题,尤其是第一个问题。感谢。

1 个答案:

答案 0 :(得分:0)

解决方案:

char data = (char)malloc ( 100*sizeof( char));   
while ( token != NULL )   
{   
   data[Tcount++] = *token;  
   token = strtok(NULL, " ");  
   for(i=0; i < (Tcount*2); i++)  
   {  
   ascii[i] = (int)data[i];   
   }  
 }   
for(i=0; i < (Tcount); i++)  
 {  
    cout << ascii[i] << endl;  
 }   
return 0;   
}