![]() |
Работа с файлами
Кто-нибудь помогите разобраться с файлами. Нужно найти определенную строку и после или перед ним добавить, например "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(" "); } |
Что-то я не понимаю.. Вижу что Вы читаете из файла строку, длиной = BUFSIZ, но где вы сверяете ее с "определенной строкой, после которой надо вставить 090" - не вижу. Так же непонятно что такое i=0 (точнее зачем оно надо), ну и параметр 'Y' в функции lseek имхо никак не связан с поиском....
|
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); } |
Чтож.. давайте разберемся.
Цитата:
Цитата:
Цитата:
|
BuGfiX спасибо, твое сообщение насчет операторов помогло.
Задачку решил другим способом. Вначале я думал, сделать все это прямо в файле. Этого не удалось. Вообщем содержимое файла загоняем в переменную. Эту переменную модифицируем, а потом перезаписываем файл. Еще вопрос: при объявлении типа <string s1> выводит ошибку, хотя указываю заговочный файл <string.h>. Может какие-то дополнения нужны. В учебнике насчет этого ниче не написано. |
В С строки объявляются как "последовательность байтов(символов), заершающихся нулем", или указатель на нее, например:
char *s1="string1"; char *s2; |
Время: 09:21. |
Время: 09:21.
© OSzone.net 2001-