LINUX.ORG.RU

В си например можно в буфер скачать строку.
Например в буфере
line такая строка

foo@bar.ru
Создаёшь два буфера.
char name[128] __attribute__ ((aligned(4)));
char domain[128] __attribute__ ((aligned(4)));
И копируешь строки в два буфера.
sscanf ( line, "%s@%s", name, domain );
Так можно числа выбирать из буфера, например буфер такой
0: 4F foo
Решение для получения этих значений такое.
unsigned int number;
unsigned int value;
char name[128] __attribute__ ((aligned(4)));
sscanf ( line, %d: %X %s", &number, &value, name );
Это то что нужно?

u0atgKIRznY5
()
Ответ на: комментарий от x4DA

Очевидно сударь хочет скопировать в буфер emacs. Вот только при чём тут c++...

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Так это проверять надо каждый раз, а указав атрибут, и можно быть увереным, что выравнивание будет. И это не повод не использовать атрибут, если ты написал про компилятор. Если атрибут доступен, значит компилятор не всегда так делает, но с атрибутом всегда. Тем более можно выровнять по другой величине. Ну и раз уж на то пошло, представь доказательства.

u0atgKIRznY5
()

no-such-file> Очевидно сударь хочет скопировать в буфер emacs.

Похоже на правду. Только при чем здесь плюсы?

ily94> Есть файл

Буфер (возможно, ограниченный). С файлом сами разберетеся.

как регуляркой скопировать нужные строки в буфер для дальнейшей работы с ним?
Найти регуляркой могу

Вот чего-то не верю. Могли бы — показали бы.

но с буфером возникают проблемы

Вот с этим как раз проблем никаких.

(defun ily94-grep (re &optional buf)
  (interactive "sRegexp: ")
  (with-output-to-temp-buffer "*ily94-grep*"
    (with-current-buffer (or buf (current-buffer))
      (save-excursion
        (goto-char (point-min))
        (while (and (= 0 (forward-line))
                    (not (eobp)))
          (let ((s (filter-buffer-substring (line-beginning-position)
                                            (line-end-position))))
            (when (string-match-p re s)
              (princ s)
              (terpri))))))))

Особо не проверял, не надейтесь, что все правильно.

Zmicier ★★★★★
()
Ответ на: комментарий от zamazan4ik

В книжке прочитал, в системном программировании. Ну да на 4 чаще стал выравнивать, но это буфер. А так ещё в структруре выравнивал однобитные переменные, чтобы к ним можно было быстрее обратиться.

u0atgKIRznY5
()
Ответ на: комментарий от u0atgKIRznY5

В книжке прочитал, в системном программировании.
А так ещё в книжке по компилятору gcc написано

А что за книжки такие?

zl0y
()
Ответ на: комментарий от zl0y

gcc - полное руководство.
linux - системное программирование.
название двух книжек.

u0atgKIRznY5
()
Ответ на: комментарий от zamazan4ik

Что-то не могу вспомнить ,если знал. Но наверное в ассемблере лучше высчитать [ + + * ] если будет на 4. А также можно align без числа писать, тогда подберётся наиболее подходящий для больших масивов.

u0atgKIRznY5
()
Последнее исправление: u0atgKIRznY5 (всего исправлений: 1)
Ответ на: комментарий от u0atgKIRznY5
char name[128] __attribute__ ((aligned(4)));

Бессмысленная строка. А на x86-64 этот конкретный атрибут ещё и не даст никаких изменений.

i-rinat ★★★★★
()
Ответ на: комментарий от u0atgKIRznY5

Если атрибут доступен, значит компилятор не всегда так делает

Нет, он доступен не поэтому.

Тем более можно выровнять по другой величине

Вот именно.

представь доказательства

Доказательства в данном случае должен предоставлять ты. А именно - найти 1 ситуацию когда компилятор выравнивает массив неоптимально для заданной архитектуры.

no-such-file ★★★★★
()

Найти регуляркой могу,но с буфером возникают проблемы

Ну что, нашёл уже C-u M-|

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.