Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/41: Рейтинг темы: голосов - 41, средняя оценка - 4.80
308 / 61 / 12
Регистрация: 21.12.2011
Сообщений: 290

Вставка пробелов в файл

09.08.2013, 07:38. Показов 8395. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В текстовый файл вставить пробелы таким образом, чтобы каждая строка имела длину 80 символов (пробелы в строке должны быть вставлены равномерно).

В общем начал писать программу, ниже код:

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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
#include <stdio>
#include <stdlib>
 
int main(int argc, char* argv[])
{
        char str[1000];
        int i, j;
        FILE *file;
        file = fopen("a.txt", "a+");
 
        /*Выводим содержимое файла*/
        printf("Soderjanie faila:\n");
        fgets(str, 1000, file);
        puts(str);
 
        /*Если файл пуст - заполнение пробелами*/
        if (fscanf(file, "%c", str) < 1)
        {
                printf("File pust! Zapolnenie probelami...\n\nGotovo!");
                for (i = 0; i < 10; i++)
                {
                        for (j = 0; j < 80; j++)
                        {
                                fputc(' ', file);
                                if ((i == 9) && (j == 79))
                                        fclose(file);
                        }
                        fputc('\n', file);
                }
        }
        else
        {
                printf("File ne pust! Zapolnenie probelami...\n\nGotovo!");
                fclose(file);
        }
        getchar();
        return 0;
}
//---------------------------------------------------------------------------
Здесь рассмотрен случай, если файл пуст. Но также файл может быть и с содержимым.

Я думаю, что содержимое str[1000] просматривается на строки, в которых будут три случая. Если строка файла <80, =80 и >80.
Т.е.
C
1
2
3
4
5
6
7
8
9
for(i = 0; i < 1000; i++)
{
        if (str[i] == '\n') // <80
        {
                k = i;
                /*Код*/
        }
        /*Остальные три случая*/
}
В общем прошу помощи.. подсказать как лучше организовать будет эти три случая)

Я так понимаю, что ещё в каждом случае будет по 3 случая. Т.е., если (str[i] == ' ')&&(str[i]==' '), если (str[i] == ' ')&&(str[i]!=' '), если (str[i] != ' ').
Эти три подслучая, лучше подпрограммой сделать?.

P.S. Пользовался поиском - ничего толкового не нашел.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2013, 07:38
Ответы с готовыми решениями:

Вставка пробелов в начало строки файла
Доброго времени суток!Помогите разобраться. В файле 123.txt подсчитывается кол-во пробелов в строке, в другой файл записывается эта же...

Отформатировать текстовый файл, абзацный доступ N пробелов
доброго времени суток всем форумчанам) в общем я тут в первый раз учусь на 1ом курсе. в школе слабенько изучали паскаль. поступил на...

Заменить строки из пробелов минимальным числом табуляций и пробелов
Правильно ли я понимаю, что если табуляция равна 5 пробелам, строка &quot;I***Love**You&quot;, где * - это пробел, то на выходе имеем:...

21
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
14.08.2013, 10:21
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Nkey Посмотреть сообщение
Но он только для записи.
и правильно, не хватало ещё всё в одну кучу сваливать
алгоритм - это последовательность дискретных шагов

Добавлено через 4 минуты
с 29 по 35 строку можно не писать, потому что 25 строка уже проверяет это
85 и 86 строки должны стоять перед закрытием файлов за пределами цикла

когда программа будет готова, тогда и реализуешь то, что отслеживают утверждения
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.08.2013, 19:47
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
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
#define MAXLINE 1000
 
void str_to_length(char *s, int length);
 
int main(void)
{
    const char *ifname = "in.txt";
    const char *ofname = "out.txt";
 
    FILE *ifp, *ofp;
    char line[MAXLINE];
    
    ifp = fopen(ifname, "r");
    assert(ifp);
    ofp = fopen(ofname, "w");
    assert(ofp);
    while (fgets(line, sizeof line, ifp)) {
        str_to_length(line, 80 + 1);
        fputs(line, ofp);
    }
    assert(!ferror(ifp));
    assert(!ferror(ofp));
    fclose(ifp);
    fclose(ofp);
    return 0;
}
 
void str_to_length(char *s, int length)
{
    int len = strlen(s);
    
    if (len < length) {
        char *p = strrchr(s, '\n');
        if (p) {
            while (len < length) {
                *p++ = ' ';
                len++;
            }
            *p = '\n';
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.08.2013, 19:47

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

Вставка пробелов
Есть массив текстбоксов с множеством символов. Например, в одном 123456789, в другом LJDVA65EVEA6. Как можно по нажатию кнопки вставить...

Вставка пробелов в строку
вот такой вот вопрос

С++. Вставка символов/пробелов
Здравствуйте, только начинаю программировать в С++, работаю со строками. Подскажите, пожалуйста, как реализуется вставка в строку...

Вставка пробелов в конечный автомат
Делаю детерминизацию конечного автомата, есть правило: rule'input' -&gt; rule2 Хочу: rule 'input' -&gt; rule2 подскажите как впихнуть...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru