|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Работа с файлами |
|
Работа с файлами
|
Новый участник Сообщения: 39 |
Профиль | Отправить PM | Цитировать Кто-нибудь помогите разобраться с файлами. Нужно найти определенную строку и после или перед ним добавить, например "090".
Что-то нашкрябал, не работает. Почему-то добавляет в конец файла. И значение t1(см. код) в другой форме выводиться. Еще один вопрос как с помощью stat посматреть размер файла. #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <math.h> main() { int fd; char inf[4]="090"; char buffer[BUFSIZ]; int t1,t2; ssize_t rcount,wcount; fd=open("ftr",O_RDWR); i=0; rcount=read(fd,buffer,BUFSIZ); printf("rcount: "); printf("%d",rcount); t1=lseek(fd,'Y',SEEK_SET); printf(" lseek: "); printf("%d",t1); wcount=write(fd,inf,16); close(fd); printf(" "); } |
|
------- Отправлено: 23:37, 09-04-2007 |
Слакофил Сообщения: 590
|
Профиль | Сайт | Отправить PM | Цитировать Что-то я не понимаю.. Вижу что Вы читаете из файла строку, длиной = BUFSIZ, но где вы сверяете ее с "определенной строкой, после которой надо вставить 090" - не вижу. Так же непонятно что такое i=0 (точнее зачем оно надо), ну и параметр 'Y' в функции lseek имхо никак не связан с поиском....
|
Отправлено: 10:27, 10-04-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать BuGfiX я не очень понимаю в прогр. в *.nix, так что извини если что -то не то.
i-она совсем не нужно(забыл убрать). Я так пинимаю эту задачку: открываем файл, считываем с файла данные размером BUFSIZ в переменную buffer. потом находим указатель или место где стоит символ 'Y'. и в это место записываем inf(на место указывает t1). Подправь пожалуйста, если я что-то не так делаю. #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <math.h> main() { int fd; char inf[4]="090"; char buffer[BUFSIZ]; int t1,t2; ssize_t rcount,wcount; fd=open("ftr",O_RDWR); rcount=read(fd,buffer,BUFSIZ); printf("rcount: "); printf("%d",rcount); t1=lseek(fd,'Y',SEEK_SET); printf(" lseek: "); printf("%d",t1); wcount=write(fd,inf,t1); close(fd); } |
------- Отправлено: 10:57, 13-04-2007 | #3 |
Слакофил Сообщения: 590
|
Профиль | Сайт | Отправить PM | Цитировать Чтож.. давайте разберемся.
Цитата:
Цитата:
Цитата:
|
|||
------- Отправлено: 12:04, 13-04-2007 | #4 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать BuGfiX спасибо, твое сообщение насчет операторов помогло.
Задачку решил другим способом. Вначале я думал, сделать все это прямо в файле. Этого не удалось. Вообщем содержимое файла загоняем в переменную. Эту переменную модифицируем, а потом перезаписываем файл. Еще вопрос: при объявлении типа <string s1> выводит ошибку, хотя указываю заговочный файл <string.h>. Может какие-то дополнения нужны. В учебнике насчет этого ниче не написано. |
|
------- Отправлено: 10:33, 23-04-2007 | #5 |
Слакофил Сообщения: 590
|
Профиль | Сайт | Отправить PM | Цитировать В С строки объявляются как "последовательность байтов(символов), заершающихся нулем", или указатель на нее, например:
char *s1="string1"; char *s2; |
------- Отправлено: 12:33, 23-04-2007 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - Работа с INF-файлами | -devICE- | Наборы обновлений для Windows XP/2003/Windows 7 | 6 | 17-10-2022 01:11 | |
Delphi - Работа с файлами в Delphi | Interceptor | Программирование и базы данных | 3 | 01-09-2004 15:13 | |
Работа с файлами в Pascal | paladin | Программирование и базы данных | 2 | 26-04-2004 11:31 | |
Работа с *reg файлами | Artya | Хочу все знать | 4 | 08-09-2003 14:32 | |
Работа с *.lng файлами | Artya | Хочу все знать | 2 | 18-03-2003 14:43 |
|