【发布时间】:2014-01-26 19:41:23
【问题描述】:
每当我尝试从文件中读取字符并尝试访问它时,都会出错。我的代码是:
while((c=fgetc(f))!=EOF) {
if(c == '\n') {
str[i]='\0';
Info* inf = new Info();
inf->getInputFromFile(str);
if((table->insert(inf))==0)
cout<<"exist."<<endl;
//delete inf;
for(int j =0; j<50;j++)
str[j]='\0';
i=0;
} else {
str[i] = c;
i++;
}
但是在这里,每当我尝试给出一个虚拟词时,例如:inf->getInputFromFile("Hello");
我没有收到任何错误。我也无法使用 debuggin 找到错误,因为当我按 F8(CodeBlocks IDE) 时,我的调试器启动并且它不会停止任何行。即我在使用 F8 运行程序时没有发现任何错误。
这里是输入文件内容:
int, INTEGER
myFunction, FUNCTION
x, IDENTIFIER
5, NUMBER
x, Identity
char, CHARACTER
fl, FLOAT
dbl, DOUBLE
you, MEINTHIS
dlt, DELETE
hel, HELLOWORLD
string, STRING
【问题讨论】:
-
那我该怎么办。在 if 情况下,在 while 旁边使用 EOF?
-
我应该改用这个:while(1){ c=fgetc(f));如果(c == EOF){中断; }
-
你在哪里得到错误?
-
问题中有太多遗漏的细节,为了检测手头的确切问题需要这些细节,所以只给你一些建议:1.函数
fgetc返回一个@987654325 @,所以声明变量c,并在需要的地方将其转换为char(如果我没记错的话,EOF是int,这可能会让你的while循环永远运行)。 2.for循环似乎没有任何意义。 3.你确定你已经打开了文件(f指向)进行阅读吗? -
你在这里做什么:
Info* inf = new Info();? C 没有new关键字。编辑:好的,我明白了:您正在使用 C++。然后更新你的问题标签。