Вставка 400 номеров в текстовый файл

Я пытаюсь записать цифры от 1 до 400 в текстовом файле. Я использую код ниже, который работает без каких-либо ошибок, но файл остается пустым.

Любая помощь будет оценена.

#include <stdio.h>

int main(void)
{
    FILE *filePointer;
    filePointer = fopen("file.txt","w");
    int i; 
    for(i=0; i > 400; i++)
    {
        fputs("%d, ",i,filePointer);
    }
    fclose(filePointer);
    return(0);
}

3 ответа

Решение

fputs синтаксис кажется неправильным. Я думаю, что это:

int fputs(const char *str, FILE *stream)

Выберите подход @unwind (как упомянуто выше), но если вы все еще хотите использовать fputs тогда ваша строка fputs должна быть расширена на 3 строки:

char temp[4];                // String to store 3-digit number + '\0'
sprintf(temp, "%d, ", i);    // Prepare a string for a given number
fputs(temp, filePointer);    // Write the string to the file

Это должно работать. #happycoding:)

PS: Вы, кажется, следуете немного стандарту C++ в объявлении переменной где-либо. Это не чистый C.

Нет, по крайней мере, это не скомпилировано без серьезных предупреждений.

Вы используете fputs() как будто это было fprintf(), передавая это целое число вместо FILE указатель (который компилятор не должен разрешать) и дополнительный аргумент (который компилятор не должен допускать).

Также ваш for петля разорвана. Средняя часть - это выражение, которое должно быть истинным до тех пор, пока должен выполняться цикл, а не наоборот.

Вы имели в виду:

for(i = 0; i < 400; ++i)
{
  fprintf(filePointer, "%d, ", i);
}

Кроме того, вы должны убедиться, что файл действительно открылся, прежде чем предположить, что он открылся. I/O может потерпеть неудачу.

Помимо использования fputs(), проблема заключается в следующем:

for(i=0; i > 400; i++)

Если вы инициализируете переменную с нулем и выполняете цикл, пока он больше 400, это не будет длиться слишком долго.

Другие вопросы по тегам