作者dmx6 (阿吉)
看板C_and_CPP
标题[问题]不知道问题出在哪 如果有人知道可以请回答我一下
时间Tue Aug 11 21:25:25 2009
我有一个文字档,内容为
input N1,N2,N3,N6,N7;
我用了一个char的指标
char *m = strchr(src,',') ;
就一个一个把他分开 然後读取出来我要的字元 N1 N2 N3....
但是 一直到N6都没问题
N7时我用了
char *n = strchr(src,';') ;
去处理最後一个字元
结果这个时後
char *m = strchr(src,',') ;
这行应该是等於NULL
但是他却说你的程式引发了存取程式错误
谁可以跟我说是什麽原因呢
有需要我再付上程式码
谢谢大家了
=================================code======================
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <conio.h>
using namespace std;
int readfile(int argc,char* filename);
void strchrn(char *dest,char *dest2, const char *src);
int main(int argc, char* argv[]) {
readfile(argc,argv[1]);
getch();
return 0;
}
int readfile(int argc,char* filename)
{
ifstream fin;
fin.open(filename);
string line;
string gatename[10000];
char* tmp;
char* dest;
char* dest2;
int i=0;
int gatecount;
if(argc != 2)
{
cout << "指令: read <档案名称>" << endl;
return 1;
}
if(!fin)
{
cout << "档案I/O失败" << endl;
return 1;
}
while(getline(fin,line)) {
istringstream ss(line);
string word;
while(ss >> word) {
if(word=="//")
break;
else if(word=="module")
break;
else if(word=="input")
{
ss >> word;
tmp=new char [word.size()+1];
dest=new char [word.size()+1];
dest2=new char [word.size()+1];
strcpy (tmp, word.c_str());
while(tmp!=NULL){
cout << tmp <<endl;
strchrn(dest,dest2, tmp);
gatename[i]=dest;
cout << gatename[i] <<endl;
i++;
tmp=dest2;
}
getch();
}
else
cout << word << endl;
}
// cout << endl;
}
fin.close();
}
void strchrn(char *dest,char *dest2, const char *src) {
char *n = strchr(src,',') ;
char *m = strchr(src,',') ;
cout <<"strlen(m) = " << strlen(m) << endl ;
int len = strlen(src)-strlen(m);
if (m!=NULL)
{
strncpy(dest, src, len);
strncpy(dest2, m+1,strlen(m)+1);
cout << "strlen(m)+1=" <<strlen(m)+1 << endl;
}
else
{
strncpy(dest, src, strlen(src)-strlen(n));
dest2=NULL;
}
cout << "dest=" << dest << endl;
dest[len] = '\0';
dest2[strlen(m)+2]='\0';
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.208.2.154
※ 编辑: dmx6 来自: 134.208.2.154 (08/11 21:25)
1F:推 elfkiller:附一下程式码看看 08/11 22:25
※ 编辑: dmx6 来自: 134.208.2.154 (08/11 22:58)
2F:→ dmx6:在最後面void strchrn 的部份 08/11 22:59
3F:→ dmx6:读的档内容为 input N1,N2,N3,N6,N7; 08/11 23:00