Что означает эта ошибка сборки при компиляции этой программы? - PullRequest
0 голосов
/ 31 октября 2009
#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 ]

1 голос
/ 31 октября 2009

fputc() принимает символ и поток в указанном порядке. Вы передаете ему указатель и поток.

if(ch!='/0') Вы сравниваете ch (символ) с многосимвольной константой (сравнение всегда дает "true"),
Я думаю, что вы хотите if(ch!='\0')

И, возможно, ваш компилятор не принимает комментарии C99 (//int вверху)


Редактировать

Также вы сравниваете char с int в

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

fgetc() возвращает int. Я не думаю, что это приведет к ошибке компилятора, но ваша программа не обязательно будет работать так, как задумано.


Edit2

Согласно некоторым результатам из Google , вы можете попробовать скопировать свой код в новый проект с новым make-файлом и повторить попытку.

1 голос
/ 31 октября 2009

Ошибки в самой программе не вызовут эту «ошибку 1».

Просто поиск в Google для dev cpp error 1 возвращает много похожих проблем, большинство из которых связано с путями.

Можете ли вы предоставить полный вывод сообщения об ошибке?

0 голосов
/ 31 октября 2009

Есть некоторые проблемы с вашим кодом. Во-первых, вы написали / 0 вместо \ 0 , а во-вторых, вы используете fputc для печати строки, когда вам нужно использовать fputs .

Я не знаю, является ли это причиной «ошибки 1», но вы можете начать с исправления этих ошибок.

EDIT:

Я не использовал этот конкретный компилятор, но любой другой компилятор, который я когда-либо использовал, печатает более конкретные сообщения об ошибках, когда обнаруживает ошибку en в коде. Вы уверены, что не можете получить что-то более конкретное, чем «Ошибка 1»?

А если не можете: печатает ли оно более конкретные сообщения об ошибках в других случаях? Если это так, то, возможно, в вашей программе нет ничего плохого, и ошибка вызвана чем-то другим, например, полным диском?

И еще одна идея: в вашем исходном посте были некоторые проблемы с #, включающими строки в начале, но кто-то отредактировал это для вас. Возможно, это не было проблемой только в посте, но в вашей исходной программе была ошибка? Проверьте эти строки! (Ошибки препроцессора могут иногда вызывать странные сообщения об ошибках.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...