Вставка текста в текстовый файл - PullRequest
0 голосов
/ 30 сентября 2011

Хорошо, возможно, это самый простой (или самый глупый) вопрос, но я только что узнал ...

Предположим, у меня есть текстовый файл, содержащий номер счета. и баланс. Я пишу программу для поиска файла с использованием введенной учетной записи №. и обновите поле баланса в том же текстовом файле с новым балансом. Я нахожу это удивительно трудным, используя файловые потоки. Проблема в том, что я пытаюсь перезаписать строку balance в указанном текстовом файле новой строкой balance .

Итак, если баланс равен 1000 (4 цифры), я могу перезаписать его еще одной строкой из 4 цифр. Но если новая строка баланса содержит более 4 цифр, она перезаписывает данные после поля баланса (это простой текстовый файл, обратите внимание ...). Например, если текстовый файл содержит

Acc. No.         balance
123456           100
123567           2500

Поля разделены символом TAB '\ t', а следующая запись отделена новой строкой '\ n'. Если я ввожу новый депозит 200000 для счета 123456, функция fwrite () перезаписывает данные в текстовом файле как ...

Acc. No          Balance
123456           2001003567         2500

Вы можете заметить, что '\ n' после поля баланса и 2 цифры от следующих счетов 'в соотв. нет. перезаписано.

Конечно, никто не хочет, чтобы это произошло :) Мне нужен способ вставить текст в этот файл, а не просто перезаписать его. Есть много результатов этого с использованием Java, python или даже SED, но ничего, используя потоки FILE. Пожалуйста, поделитесь своими мыслями ... спасибо.

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Вам придется переместить все данные после точки вставки на несколько байтов вверх в первую очередь.Это то же самое делают Java, sed или python, если они не пишут временный файл для начала.

0 голосов
/ 30 сентября 2011

Если вы действительно хотите управлять своими данными в виде простого текстового файла:

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

Системы баз данных были изобретены для таких целей.Поэтому я рекомендую управлять вашими данными в таблице базы данных и динамически создавать текстовый отчет при необходимости.

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