Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 11.04.2016
Сообщений: 31

Запись данных в файл в одну строку

08.05.2016, 19:29. Показов 2318. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, при записывании в файл трех параметров(название книги, автор и год) через FILE* данные записываются очень далеко друг от друга в одну колонку(около 100 пустых строк между ними)

Возможно ли сделать так, чтобы данные записывались в строку (назв, автор, год) а следующие данные записывались ниже?

C
1
2
3
4
5
6
7
8
9
FILE* fp = fopen ("text.txt", "w");
fwrite(&books[0], sizeof(tag_book), 1,fp);
fclose(fp);
for (int j=1; j< N; j++)
{
fp = fopen ("text.txt", "a");
fwrite(&books[j], sizeof(tag_book), 1,fp);
fclose(fp);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2016, 19:29
Ответы с готовыми решениями:

Запись в файл в одну строку +
Извиняюсь, но помогите в решении данных вопросов: 1. При последующем открытии файла для записи, данные принципиально записываются в...

Запись в файл. Все в одну строку
Вот код: void CreateDictionary(char *file_name) { ofstream file_in(file_name); file_in.close(); } void WriteInTheFile(fstream...

Запись данных в одну строку таблицы из нескольких блоков формы
Помогите новичку, пожалуйста. Требуется создать форму, а в строке &quot;Адрес&quot; сделать 2 поля со списком, чтобы выбрать регион и город, и одно...

9
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
08.05.2016, 20:01
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    char *name = "NAME";
    char *lastname = "LASTNAME";
 
    FILE* fp = fopen("test.txt", "a+");
    if(!fp) {
        perror("File opening failed");
        return EXIT_FAILURE;
    }
    fprintf(fp,"%s %s\n", name, lastname);
    rewind(fp);
 
    int c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) { // standard C I/O file reading loop
       putchar(c);
    }
 
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
        puts("End of file reached successfully");
 
    fclose(fp);
 
    return EXIT_SUCCESS;
}
0
0 / 0 / 0
Регистрация: 11.04.2016
Сообщений: 31
08.05.2016, 20:03  [ТС]
SergioO, мне нужно через массив данных сделать.
Я программу написал, но не знаю как сделать так, чтобы через fwrite он данные массива записывал как я хочу, а е через 100 строк
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
08.05.2016, 20:17
Kirzv, какой массив?

Добавлено через 2 минуты
Цитата Сообщение от Kirzv Посмотреть сообщение
чтобы через fwrite он данные массива записывал
а чем fprintf не нравится?
0
0 / 0 / 0
Регистрация: 11.04.2016
Сообщений: 31
08.05.2016, 20:26  [ТС]
У меня есть массив из данных о владельце авто, машине и годом выпуска
человек вводит его с клавиатуры и заполняет массив.
потом я вызываю файл моим кодом и записываю туда мои данные.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct auto
{
    char name[100];
    char car[100];
    int year;
} autos[N];
int main(void)
{
for (int i=0; i< N; i++)
{
    scanf("%s", autos[i].name);
    scanf("%s", autos[i].car);
    scanf("%d", &autos[i].year);
}
FILE* fp = fopen ("carsmy.txt", "wb");
fwrite(&autoss[0], sizeof(auto), 1,fp);
fclose(fp);
for (int j=1; j< N; j++)
{
fp = fopen ("carsmy.txt", "ab");
fwrite(&autos[j], sizeof(autos), 1,fp);
fclose(fp);
}
Добавлено через 26 секунд
SergioO, printf печатает же только определенные данные, а мне надо чтобюы он печатал данные из массива

Добавлено через 6 минут
SergioO, грубо говоря, мне нужно через структуру сделать массив и использовать его
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
08.05.2016, 20:27
Лучший ответ Сообщение было отмечено Kirzv как решение

Решение

C
1
2
3
4
5
6
for (int j=1; j< N; j++)
{
fp = fopen ("carsmy.txt", "ab");
fwrite(&autos[j], sizeof(autos), 1,fp);
fclose(fp);
}
так точно делать не надо - это в каждом цикле открывать и закрывать файл

примерно так
C
1
2
3
4
5
fopen("file", a+);
for(int j=1; j< N; j++){
fprintf(fp,"%s %s %i\n", autos[j].name, autos[j].car, autos[j].year);
}
fclose(fp);
1
0 / 0 / 0
Регистрация: 11.04.2016
Сообщений: 31
08.05.2016, 20:42  [ТС]
SergioO, что-то ругается компилятор

Добавлено через 3 минуты
SergioO, странно, все равно записывает криво в файл

Добавлено через 1 минуту
SergioO, а, нет, он что-то вообще не записывает в файл

Добавлено через 2 минуты
Цитата Сообщение от SergioO Посмотреть сообщение
a+
ты уверен, что это не в кавычках должно быть?

Добавлено через 5 минут
SergioO, в общем, я исправил. Все получилось
Большой спасибо!
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
08.05.2016, 20:43
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <stdlib.h>
 
struct auto_{
        char name[100];
        char car[100];
        int year;
    };
const int N = 2;
 
int main(void){
 
    struct auto_ autos[N];
 
    int i;
    for (i=0; i < N; i++){
        scanf("%s", autos[i].name);
        scanf("%s", autos[i].car);
        scanf("%d", &autos[i].year);
    }
 
 
    FILE* fp = fopen("test.txt", "a+");
    if(!fp) {
        perror("File opening failed");
        return EXIT_FAILURE;
    }
    int j;
    for (j=0;j<N;j++){
        fprintf(fp,"%s %s %i\n", autos[j].name, autos[j].car, autos[j].year);
    }
    rewind(fp);
 
    int c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) { // standard C I/O file reading loop
       putchar(c);
    }
 
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
        puts("End of file reached successfully");
 
    fclose(fp);
 
    return EXIT_SUCCESS;
}
0
0 / 0 / 0
Регистрация: 11.04.2016
Сообщений: 31
08.05.2016, 20:44  [ТС]
SergioO, не подскажешь, как избавиться от этого?

C
1
2
‘«*ўЁЄ Ђ««*е 228
ђ®¬** …ўЈҐ*쥢Ёз 3456
(Когда печатаешь на русском вводные данные)
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
08.05.2016, 22:38
C
1
setlocale(LC_ALL, "RUS");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.05.2016, 22:38
Помогаю со студенческими работами здесь

запись в одну строку
День добрый. подскажите можно ли сделать что бы даты входа выхода были на одной строке.см.рис Private Sub Кнопка36_Click() 'выход Dim...

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

Запись нескольких массивов в одну строку
У меня есть три массива: firstname = {} lastname = {} age = {} Как вывести все нулевые элементы в одну строку, следующие в...

Запись в одну строку через StreamWriter
Написала код, который заносит данные в текстовый файл с помощью StreamWriter. Но он заносит их в столбец. Подскажите, пожалуйста, что...

Запись нескольких слов в одну строку
Делаю прогу (опрос/анкета) в excel, в ней есть вопрос в котором можно выбрать несколько вариантов ответов (так называемые вопросы с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru