2009-10-31 63 views
0
#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
int main() 
{ 
    // int 
    char str[40],ch; 

    FILE*fp,*fp1,*fp2; 

    fp=fopen("ide_input","w"); 
    fp1=fopen("error_log","w"); 
    fp2=fopen("lex_output","w"); 

    if(fp==NULL || fp1==NULL) 
    { 
     strcpy(str,"file cannot be found"); 
     fputc(str,fp1); 
    } 

    while(1) 
    { 
     ch=fgetc(fp); 
     if(ch==EOF) 
      break; 
     else 
     { 
      if(ch!='/0') 
       fputc(ch,fp2); 
     } 
    } 
    fclose(fp); 
    fclose(fp1); 
    system("pause"); 
    return 0; 
} 

此代码给了我一个“构建错误..错误1”的错误。我可以知道为什么吗?我在Windows XP上开发dev cpp?编译此程序时,此构建错误意味着什么?

+0

错误的文字是什么? – pmg 2009-10-31 11:15:19

+0

构建错误[compiler.exe]错误1 – Hick 2009-10-31 11:17:05

+1

您确定要打开所有3个文件以进行写入吗?没有阅读? – pmg 2009-10-31 11:30:30

回答

0

您的代码存在一些问题。一件事是,你写/0而不是\ 0,另一种是,你正在使用的fputc打印字符串时,你应该使用的fputs

我不知道这是什么原因导致“错误1”,但你可以从修复这些错误开始。

编辑:

我没有使用过这种特殊的编译器,但所有其他的编译器我曾经用过的打印更具体的错误消息,当它在代码中找到一个连接错误。你确定你不能得到比“错误1”更具体的东西吗?

如果你不能:在其他情况下是否打印更具体的错误信息?如果是这样,那么你的程序可能没有问题,并且错误是由其他东西引起的,比如一个完整的磁盘?

另一个想法:在你原来的文章中,开头的#包括行出现了一些问题,但有人为你编辑了它。也许这只是在帖子中不是问题,但是你的原始程序有错误吗?检查这些行! (预处理器错误有时会导致奇怪的错误消息。)

+0

我做了更改仍然说它生成错误[compiler.exe]错误1 – Hick 2009-10-31 11:12:40

1

fputc()按此顺序接受字符和流。你传递一个指针和一个流。

if(ch!='/0')你比较ch(字符)到多字符常量(比较总是产生“真”),
我想你想if(ch!='\0')

也许你的编译器不接受C99注释(//int在顶部)


编辑

还有你在

ch = fgetc(fp); 
if (ch == EOF) 
    break; 

fgetc()比较一个charint返回int。我不认为这会导致编译器产生错误,但是你的程序不一定按预期运行。


EDIT2

Google一定的效果,你可能想尝试你的代码复制到一个全新的项目,以崭新的makefile文件,然后再试一次。

+0

我做了chages,仍然有同样的错误。想知道这意味着什么 ? – Hick 2009-10-31 11:20:05

1

程序本身的错误不会导致这个“错误1”。

只需使用googling for dev cpp error 1返回很多类似的问题,大部分都与路径问题有关。

你能否提供完整的错误信息输出?