从FILE读取并使用strtok函数时出现问题

时间:2011-01-28 09:52:58

标签: c++

我在C ++中编写了一个代码,它必须从txt文件中读取信息,并在找到“|”时它必须跳到一个新的字符串。它的东西很容易但我在执行时遇到问题并且我一直试图找到问题几个小时而且我还没有成功。 :(我附上了代码。

Thaaaanks提前帮助你。

#include<iostream>
#include<fstream>
#include<string>
#include <stdio.h>

using namespace std;

int main ()
{
   string ruta_base( "C:\\a\\" );
   char * pch;

   ifstream myReadFile;
   const string rutaFichero=ruta_base.append("text.txt");
   myReadFile.open(rutaFichero.c_str());

   char* temp;
   if (myReadFile.is_open()) {
      while (!myReadFile.eof()) {
         myReadFile.read(temp,1);

         pch = strtok(temp,"|");
         while (pch != NULL)
         {
            printf ("%s\n",pch);
            pch = strtok (NULL, "|");
         }
      }
   }
   myReadFile.close();

   system("pause");
   return 0;
}

1 个答案:

答案 0 :(得分:0)

您在temp函数中使用了未初始化的指针read。尝试写入此内存位置将调用未定义的行为。不要创建temp作为指针。相反,您可以执行char temp;并将临时地址&temp传递给read函数。然后您无需使用strtok,只需将阅读的字符与|

进行比较即可