获取数组中每个元素的索引

时间:2012-04-22 06:17:27

标签: c++

使用C ++,我正在使用fgets将文本文件读入char数组,现在我想获得此array.i.e中每个元素的索引。 line [0] = 0.54 3.25 1.27 9.85,然后我想在一个单独的数组中返回line [0]的每个元素,即readElement [0] = 0.54。 我的text.txt文件格式为:0.54 3.25 1.27 9.85                     1.23 4.75 2.91 3.23 这是我写的代码:

char line[200]; /* declare a char array */
char* readElement [];

read = fopen("text.txt", "r");
while (fgets(line,200,read)!=NULL){ /* reads one line at a time*/
printf ("%s print line\n",line[0]); // this generates an error

readElement [n]= strtok(line, " "); // Splits spaces between words in line
    while (readElement [1] != NULL)
  {
printf ("%s\n", readElement [1]); // this print the entire line not only element 1

  readElement [1] = strtok (NULL, " ");
  }
n++;
}

由于

1 个答案:

答案 0 :(得分:0)

readElement看起来误报了。只需将其声明为指向字符串开头的指针:

char* readElement = NULL;

你也没有检查fopen的返回值。这是最可能的问题。因此,如果文件实际上没有打开,那么当你将它传递给printf时,“line”就是垃圾。

如果你真的想将该行的每个元素存储到一个数组中,你需要为它分配内存。

另外,不要将变量命名为“read”。 “read”也是较低级别函数的名称。

const size_t LINE_SIZE = 200;
char line[LINE_SIZE];
char* readElement = NULL;
FILE* filestream = NULL;

filestream = fopen("text.txt", "r");
if (filestream != NULL)
{
    while (fgets(line,LINE_SIZE,filestream) != NULL)
    {
        printf ("%s print line\n", line);

        readElement = strtok(line, " ");
        while (readElement != NULL)
        {
             printf ("%s\n", readElement);
             readElement = strtok (NULL, " ");    
        }
      }
    }
    fclose(filestream);
}