编译此程序时,此构建错误意味着什么?

时间:2009-10-31 11:06:56

标签: c

#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?

3 个答案:

答案 0 :(得分:1)

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

if(ch!='/0')您将ch(一个字符)与多字符常量进行比较(比较总是会产生“真”),
我想你想要if(ch!='\0')

也许你的编译器不接受C99评论(顶部的//int


修改

此外,您要将charint进行比较

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

fgetc()会返回int。我不认为这会导致编译器生成错误,但您的程序不一定按预期运行。


EDIT2

根据Google的一些结果,您可能想尝试使用全新的makefile将代码复制到一个全新的项目中,然后重试。

答案 1 :(得分:1)

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

只需google搜索dev cpp错误1就会返回很多类似的问题,大多数都与路径问题有关。

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

答案 2 :(得分:0)

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

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

编辑:

我没有使用过这个特殊的编译器,但是我曾经使用过的每个其他编译器在代码中发现一个错误时会打印出更具体的错误消息。你确定你不能得到比“错误1”更具体的东西吗?

如果你不能:在其他情况下是否会打印更具体的错误消息?如果确实如此,那么您的程序可能没有任何问题,错误是由其他内容引起的,例如完整的磁盘?

另一个想法:在您的原始帖子中,开头的 #include 行存在一些问题,但有人为您编辑了这些内容。也许这不仅仅是帖子中的问题,但原始程序中有错误?检查那些线! (预处理器错误有时会导致奇怪的错误消息。)