Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
5 / 5 / 2
Регистрация: 13.06.2009
Сообщений: 67

Определить количество строк в файле

02.12.2011, 21:55. Показов 72430. Ответов 65
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Как узнать кол-во строк в файле .txt на СИ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2011, 21:55
Ответы с готовыми решениями:

В текстовом файле определить количество всех строк и количество символов в каждой строке.
В текстовом файле определить количество всех строк и количество символов в каждой строке.

Определить количество строк в текстовом файле
Есть текстовый файл в котором что то написано, нужно посчитать количество строк используя язык VBS. Код в который надо запихнуть...

Определить количество строк в открытом файле
Здравствуйте, Форумчане. Напишите пожалуйста исходник. Мне нужно чтобы, 1. "программа открывала файл(желательно TXT)"...

65
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
05.06.2025, 17:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Eddy_Em Посмотреть сообщение
А говоришь, зачем строки считать?
Если надо
Цитата Сообщение от Eddy_Em Посмотреть сообщение
узнать, сколько у тебя файлов в директории и вложенных в поддиректории
надо считать файлы, а не строки.
0
175 / 10 / 1
Регистрация: 05.08.2024
Сообщений: 73
05.06.2025, 19:51
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Нельзя. Ничего там расширено не будет. А unsigned char совершенно аналогично EOF превратит в 255…
C
1
2
3
4
5
6
7
8
#include <stdio.h>
int main() {
    unsigned char Symbol = 255;
    
    if (Symbol == EOF) { printf("Symbol = EOF"); }
    else { printf("Symbol != EOF"); }
    return 0;
}
Ради интереса решил проверить. Компилятор Visual C++ 2022 выдал, что EOF и Symbol не равны. (На других компиляторах не знаю)
Компилятор Visual C++ 2022 доводит переменные и константы до одного типа, который будет равен большому подходящему или новому большому, т.к. нельзя сравнивать разные типы данных:
short int и int = int, т.к. short int и int со знаком, а также int больше short int.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
05.06.2025, 19:59
Цитата Сообщение от Daniil_G Посмотреть сообщение
Visual C++ 2022 выдал, что EOF и Symbol не равны.
Вот так попробуй:
C
1
2
3
4
5
6
7
#include <stdio.h>
 
int main()
{
  printf("EOF = 0x%X\n", EOF);
  return 0;
}
gcc под линупс пишет
Code
1
EOF = 0xFFFFFFFF
Под винду - аналогичечно (токашто проверил).
0
фрилансер
 Аватар для Алексей1153
6498 / 5729 / 1133
Регистрация: 11.10.2019
Сообщений: 15,307
05.06.2025, 20:16
Daniil_G, здесь не требуется гадание или эксперименты. В документации чётко написано

int c; // note: int, not char, required to handle EOF
0
175 / 10 / 1
Регистрация: 05.08.2024
Сообщений: 73
05.06.2025, 20:18
Цитата Сообщение от Verevkin Посмотреть сообщение
EOF = 0xFFFFFFFF
Так он все правильно и пишет. Число -1 в шестнадцатиричном представлении типа int представляется 0xFFFFFFFF, а
F = 1111, т.е. -1 = 1111111..(32 единицы)..1b. Но тут надо учесть главное - один тип беззнаковый, а другой со знаком, следовательно, при установке старшего бита числа со знаком оно будет автоматически меньше любого другого беззнакового типа.

Добавлено через 1 минуту
При сравнивании чисел надо учитывать сначала не их представление в двоичном виде, а их тип.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
05.06.2025, 20:19
Цитата Сообщение от Алексей1153 Посмотреть сообщение
здесь не требуется гадание или эксперименты. В документации чётко написано
Часто бывает так, что быстрее и проще написать экспериментальную прогу за 2 минуты, чем полчаса курить мануалы.
0
175 / 10 / 1
Регистрация: 05.08.2024
Сообщений: 73
05.06.2025, 20:20
Цитата Сообщение от Алексей1153 Посмотреть сообщение
int c; // note: int, not char, required to handle EOF
В этом месте я был не прав.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
05.06.2025, 20:22
Цитата Сообщение от Daniil_G Посмотреть сообщение
Так он все правильно и пишет. Число -1 в шестнадцатиричном представлении типа int представляется 0xFFFFFFFF
Так я и не спорю. Ты на свой код посмотри: 255 не равно -1, т.к. перед сравнением оба операнда приводятся к одному общему размеру, поэтому сравниваются числа 0xFFFFFFFF и 0x000000FF.
0
фрилансер
 Аватар для Алексей1153
6498 / 5729 / 1133
Регистрация: 11.10.2019
Сообщений: 15,307
05.06.2025, 20:31
Цитата Сообщение от Verevkin Посмотреть сообщение
чем полчаса курить мануалы
ну, в C и C++ есть вещи, которые нужно или запомнить, или именно вычитать в документации. Эксперименты не спасут.

Я потому изначально сразу и подсказал, что нужно int, а не char, чтобы ТС не нужно было лазить в доку
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
05.06.2025, 20:35
Цитата Сообщение от Алексей1153 Посмотреть сообщение
ну, в C и C++ есть вещи, которые нужно или запомнить, или именно вычитать в документации. Эксперименты не спасут.
Не все вещи в C и C++ такие.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,265
06.06.2025, 02:04
=========================
Я работал практически с текстами. Количество '\n' часто не соответствует количеству '\r'
Была такая ситуёвина, я расставлял правильно эти штуки,
текст от этого раздувался, приходилось делать realloc.
Я загонял текст в простой линейный массив, расставляя эти символы.
Размера массива не хватало.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ================= Вставить одну строчку в массив (Удлиннить массив, если короткий) Гонит текст построчно...
void add_line(char **ms, const char *msg,
    unsigned int &volume// Размер основного массива 
){
    if (strlen(*ms) + strlen(msg) > volume - 2){//<==== volume-2 подбирал, что бы добавление одного символа,
                int length_share = strlen(*ms);
    volume = (length_share + strlen(msg) + 1024);// Цифра 64 от фонаря, на е*** текст
        *ms = (char*)realloc(*ms, volume);
// *(*ms + length_share) = '\0';//<==== После realloc, главное вставить на правильное место ноль. !!!
// wsprintf(yt, L"2   strlen(*ms)=%d strlen(msg)=%d volume=%d", strlen(*ms), strlen(msg), volume);
        //warn(yt);
    }
    strcat(*ms, msg); strcat(*ms, "\r\n");// Что бы сделать в массив strcat, там должен стоять ноль
}
Мрачная такая беда... Но работает у меня сейчас.

Добавлено через 1 час 59 минут
И такая там ещё беда вставлена...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if (store == num)small_buf = (char*)calloc(BUFSIZ * (num+1), sizeof(char));
 
if (store-- && !*cut_ptr) {// Буфер для строк. Что бы на realoc по одному символу не приходило.
    strcat(small_buf, msg.c_str()); strcat(small_buf, "\r\n");
         }//Здесь вылетит в конце файла (В буфере остануться строки)
        else {
 
            strcat(small_buf, msg.c_str());// Последний "\r\n" не ставить. Ввалит функция.
        add_line(&ms, small_buf, volume);// Писать в массив всё не найденное(Функция с realloc)
    store = num;// Вылет по укомплектованию пакета
        free(small_buf);
        small_buf = NULL;
             }// -----------------------------------
Добавлено через 26 минут



Кстати считаю строки файла в строчках 28-29-30
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
//-----------------------------            
                    FILE *fp; size_t file_size(0);// Сишное узнавание размера файла
                    if ((fp = _wfopen(folder, L"rb")) != 0) {
                        int prev = ftell(fp);
                        fseek(fp, 0L, SEEK_END);
                        file_size = ftell(fp);// fine_count --- Размер файла
                        fseek(fp, prev, SEEK_SET); //go back to where we were
                        
                        ++count_fl_cpp;// Сколько открывало файлов cpp...
                                   //----------------------------           
                        char buf[512]; short num{};  bool found_ln = false;// Отличить пустой файл *cpp, msvs 2017
                        while ((fgets(buf, 512, fp)) != NULL && ++num < 15)
                    if (num == 14 && 0 == strncmp(buf, "// Tips for Getting Started:", 28))// 
                                        found_ln = true;
                        fseek(fp, prev, SEEK_SET); //go back to where we were
                    if (file_size <= 173 || found_ln) {//  || found
                //  wprintf(L"%s --- %d\n", &wfd.cFileName[0], fine_count);
                            *wcsrchr(folder, L'\\') = '\0'; *wcsrchr(folder, L'\\') = '\0';
                            fclose(fp);
                if (cool_deleter(folder))++empty_source;// Файл закрывай, а то не удаляет ни хуя
                else wprintf(L"%s%s", L"I can't delete a folder: ", &wfd.cFileName[0]);
                        }
                        else {
                            if (mode) {
                                char ln_for[BUFSIZ]{};
                                int at{ prev };
                                                            
                    size_t linecount{ 0u };// посчитать строки в тексте -- fscanf(fp, "%*[^\n]%*c");
        while ((fgets(ln_for, BUFSIZ, fp) != NULL))
                                            linecount++;
                
                    fseek(fp, prev, SEEK_SET); //go back to where we were   
 
    wprintf(L" ==================== %s%s%d... %u%s\n", &wfd.cFileName[0], L"...  file_size = ", file_size, linecount,L" lines");
Это для разбора папки с исходниками.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,265
06.06.2025, 02:26
0
Модератор
Эксперт С++
 Аватар для zss
13789 / 10981 / 6492
Регистрация: 18.12.2011
Сообщений: 29,281
06.06.2025, 15:37
Хочу обратить внимание, что в текстовом режиме EOF (равное 0XFF) возвращается функцией fgetc
при чтении символа с кодом 0X1A, а не c кодом 0XFF.
И символы после 0X1A не читаются
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main()
{
    FILE* f=fopen("f.txt","wb");
    fputs("ab\x1A\x63",f);
    fclose(f);
    f=fopen("f.txt","rt");
    for(int i=0;i<4;i++)
    {
        unsigned char x=fgetc(f);
        printf("%c %x\n",x,x);
    }
    getchar();
    return 0;
}
вывод:
Code
1
2
3
4
a  61
b  62
   ff
   ff
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,170
Записей в блоге: 19
07.06.2025, 20:25
Цитата Сообщение от zss Посмотреть сообщение
в текстовом режиме
Это только в маздае такое есть. В нормальных ОС нет никаких "текстовых режимов"! И EOF везде одинаковый - "-1". Поэтому и нужен int, т.к. в char/uchar это будет кодом буквы "Ъ"!
1
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
19.06.2025, 13:07
Цитата Сообщение от Verevkin Посмотреть сообщение
Да кому нахрен понадобилось на практике считать строки в файле? Нахрена оно надо-то??!
Не обязательно в файле, можно в stdout предыдущей программы. И, судя по тому, что программа wc давным-давно входит в стандартную поставку, эта операция отнюдь не редкая.
Цитата Сообщение от Наталья8 Посмотреть сообщение
Я работал практически с текстами. Количество '\n' часто не соответствует количеству '\r'
Теоретически, перевод строки это только '\n'. А '\r' это только возврат каретки. То есть, по-хорошему, считать надо только '\n'. Вот только бывают еще, например, терминалы, которые на Enter выдают именно '\r'. Поэтому в общем случае вообще непонятно как это обрабатывать.
Цитата Сообщение от zss Посмотреть сообщение
Хочу обратить внимание, что в текстовом режиме EOF (равное 0XFF) возвращается функцией fgetc
Что вы понимаете под "текстовым режимом"?
Ну и то, что EOF не помещается в uint8_t уже написали. EOF по определению не имеет права помещаться в uint8_t, поскольку в бинарном файле может встретиться любое число от 0x00 до 0xFF и было бы глупо по какому-то из них внезапно прерывать обработку.
Цитата Сообщение от zss Посмотреть сообщение
unsigned char x=fgetc(f);
Видите? Вы приводите int к unsigned char, специально сужая диапазон.
Цитата Сообщение от zss Посмотреть сообщение
И символы после 0X1A не читаются
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(){
  FILE *pf = fopen("test.txt", "wt");
  fprintf(pf, "Test%cDone\n", 0x1A); //Пишем "волшебный 0x1A в начало файла
  for(int i=0; i<256; i++)fprintf(pf, "%c", i); //Пишем вообще все возможные символы в файл
  fprintf(pf, "Done2\n"); 
  fclose(pf);
  
  pf = fopen("test.txt", "rt");
  int ch;
  while( (ch=fgetc(pf))!=EOF )printf("%c|0x%.2X,", ch, (unsigned char)ch);
  printf("\n");
  fclose(pf);
  printf("EOF = %i\n", EOF);
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ gcc main.c -Wall -Wextra -Wpedantic -Werror
$ ./a.out 
T|0x54,e|0x65,s|0x73,t|0x74,▒|0x1A,D|0x44,o|0x6F,n|0x6E,e|0x65,
|0x0A,|0x00,|0x01,|0x02,|0x03,|0x04,|0x05,|0x06,|0x07|0x08,     |0x09,
|0x0A,
      |0x0B,
|0x0D,|0x0E,|0x0F,|0x10,|0x11,|0x12,|0x13,|0x14,|0x15,|0x16,|0x17,▒|0x18,|0x19,▒|0x1A,0x1B,|0x1C,|0x1D,|0x1E,|0x1F, |0x20,!|0x21,"|0x22,#|0x23,$|0x24,%|0x25,&|0x26,'|0x27,(|0x28,)|0x29,*|0x2A,+|0x2B,,|0x2C,-|0x2D,.|0x2E,/|0x2F,0|0x30,1|0x31,2|0x32,3|0x33,4|0x34,5|0x35,6|0x36,7|0x37,8|0x38,9|0x39,:|0x3A,;|0x3B,<|0x3C,=|0x3D,>|0x3E,?|0x3F,@|0x40,A|0x41,B|0x42,C|0x43,D|0x44,E|0x45,F|0x46,G|0x47,H|0x48,I|0x49,J|0x4A,K|0x4B,L|0x4C,M|0x4D,N|0x4E,O|0x4F,P|0x50,Q|0x51,R|0x52,S|0x53,T|0x54,U|0x55,V|0x56,W|0x57,X|0x58,Y|0x59,Z|0x5A,[|0x5B,\|0x5C,]|0x5D,^|0x5E,_|0x5F,`|0x60,a|0x61,b|0x62,c|0x63,d|0x64,e|0x65,f|0x66,g|0x67,h|0x68,i|0x69,j|0x6A,k|0x6B,l|0x6C,m|0x6D,n|0x6E,o|0x6F,p|0x70,q|0x71,r|0x72,s|0x73,t|0x74,u|0x75,v|0x76,w|0x77,x|0x78,y|0x79,z|0x7A,{|0x7B,||0x7C,}|0x7D,~|0x7E,|0x7F,�|0x80,�|0x81,�|0x82,�|0x83,�|0x84,�|0x85,�|0x86,�|0x87,�|0x88,�|0x89,�|0x8A,�|0x8B,�|0x8C,�|0x8D,�|0x8E,�|0x8F,�|0x90,�|0x91,�|0x92,�|0x93,�|0x94,�|0x95,�|0x96,�|0x97,�|0x98,�|0x99,�|0x9A,�|0x9B,�|0x9C,�|0x9D,�|0x9E,�|0x9F,�|0xA0,�|0xA1,�|0xA2,�|0xA3,�|0xA4,�|0xA5,�|0xA6,�|0xA7,�|0xA8,�|0xA9,�|0xAA,�|0xAB,�|0xAC,�|0xAD,�|0xAE,�|0xAF,�|0xB0,�|0xB1,�|0xB2,�|0xB3,�|0xB4,�|0xB5,�|0xB6,�|0xB7,�|0xB8,�|0xB9,�|0xBA,�|0xBB,�|0xBC,�|0xBD,�|0xBE,�|0xBF,�|0xC0,�|0xC1,�|0xC2,�|0xC3,�|0xC4,�|0xC5,�|0xC6,�|0xC7,�|0xC8,�|0xC9,�|0xCA,�|0xCB,�|0xCC,�|0xCD,�|0xCE,�|0xCF,�|0xD0,�|0xD1,�|0xD2,�|0xD3,�|0xD4,�|0xD5,�|0xD6,�|0xD7,�|0xD8,�|0xD9,�|0xDA,�|0xDB,�|0xDC,�|0xDD,�|0xDE,�|0xDF,�|0xE0,�|0xE1,�|0xE2,�|0xE3,�|0xE4,�|0xE5,�|0xE6,�|0xE7,�|0xE8,�|0xE9,�|0xEA,�|0xEB,�|0xEC,�|0xED,�|0xEE,�|0xEF,�|0xF0,�|0xF1,�|0xF2,�|0xF3,�|0xF4,�|0xF5,�|0xF6,�|0xF7,�|0xF8,�|0xF9,�|0xFA,�|0xFB,�|0xFC,�|0xFD,�|0xFE,�|0xFF,D|0x44,o|0x6F,n|0x6E,e|0x65,2|0x32,
|0x0A,
EOF = -1
$ cat test.txt 
Test▒Done
 
 
 
▒▒123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������Done2
$
У-у-упс! Все работает, как и ожидалось. И EOF равен -1, и 0x1A никак на файл не влияет.
Цитата Сообщение от Eddy_Em Посмотреть сообщение
И EOF везде одинаковый - "-1".
Насколько я слышал, стандарт не оговаривает чтобы именно -1. Может быть любое число за пределами uint8_t.
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,170
Записей в блоге: 19
20.06.2025, 09:09
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Насколько я слышал, стандарт не оговаривает чтобы именно -1.
Ну как же? Вот, смотрим в /usr/include/stdio.h:
Code
1
2
3
/* The value returned by fgetc and similar functions to indicate the
   end of the file.  */
#define EOF (-1)
0
фрилансер
 Аватар для Алексей1153
6498 / 5729 / 1133
Регистрация: 11.10.2019
Сообщений: 15,307
20.06.2025, 09:22
Eddy_Em, это какой-то исходник. Стандарт немного иначе выглядит
1
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
20.06.2025, 09:33
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Ну как же? Вот, смотрим в /usr/include/stdio.h:
А надо - в стандарт, а не в особенности реализации. У меня под рукой оказался только С11:
EOF
which expands to an integer constant expression, with type int and a negative value, that is returned by several functions to indicate end-of-file, that is, no more input from a stream;
И вот еще интересная цитата:
The value of the macro WEOF may differ from that of EOF and need not be negative.
Короче, EOF не просто за пределами uint8_t, как я думал, а именно отрицательный. Не обязательно -1.
И есть еще WEOF, который не обязан даже быть отрицательным.
0
20.06.2025, 11:01

Не по теме:

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А надо - в стандарт, а не в особенности реализации.
Дык, других-то реализаций и нет ☺

0
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
20.06.2025, 11:27
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Дык, других-то реализаций и нет ☺
Ну как же. Есть корявая реализация от Майкрософта, есть (была) от Борланда, есть какие-то интеловские.
И даже гнутая реализация с новым обновлением может изменить свое поведение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.06.2025, 11:27

Определить количество символов, слов и строк в файле
Здравствуйте ребята, на практических столкнулась с проблемой, необходима ваша помощь) Есть некий текстовый файл, мне нужно определить...

Определить количество пустых строк в текстовом файле
1)Дан текстовый файл. Определить количество пустых строк в файле.

Определить количество строк в файле и динамически выводить на экран
Доброго времени суток. Есть текстовый файл list.txt, в котором постоянно, примерно раз в секунду меняется содержимое. Нужно выводить в...

Определить количество строк в текстовом файле, в которых есть символ «!»
Гайс, хелп плз.....) Определить количество строк в текстовом файле, в которых есть символ «!».

Определить количество пустых строк в текстовом файле, и напечатать их номера
Дан текстовый файл F. Определить количество пустых строк и напечатать их номера.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru