Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C (СИ) Генератор рандомного текста Добрый вечер. Пытаюсь сделать генератор рандомной строки. #include <iostream> #include <windows.h> #include <conio> #include <string> using namespace std; int main(){ int n=st.length(); for (int k=0; k <= 10; k++) { randomize(); https://www.cyberforum.ru/ c-beginners/ thread348064.html C (СИ) Соответствует ли это стандарту С?
В Visual Studio и в CodeBlocks такой код компилируется с предупреждением. #include <stdio.h> #include <stdlib.h> void f(int *p) { *p = 0; } int main(int argc, char *argv)
C (СИ) typedef struct X{X* pX;}X; Собственно сабж: typedef struct X{ X* ptrX; }X; Когда происходит объявление ptrX тип X еще не объявлен. Как сделать "по дзену" ? https://www.cyberforum.ru/ c-beginners/ thread347388.html C (СИ) Вывести на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы https://www.cyberforum.ru/ c-beginners/ thread347387.html
Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #include <stdio.h> #include <string.h> #include <ctype.h> #define GLAS "AEIOUYaeiouy" int PrintWords(char *fileName)
C (СИ) Не считается функция
только начал изучать С++ моя 1 программа в нем. #pragma argsused #include <math.h> #include <conio.h> #include <stdio.h> void main(void) { double b; printf("You enter: \nb:"); scanf("%f",&b);
C (СИ) Метод Гаусса, для нахождения обратной матрицы Доброго времени суток, уважаемые форумчане! Большая просьба, проверьте код на правильность Это метод Гаусса, для нахождения обратной матрицы Проверка не сходится #include <stdio.h> int main(int argc, char** argv) https://www.cyberforum.ru/ c-beginners/ thread347088.html
C (СИ) На экран вместо введённых символов выводятся символы ASCII https://www.cyberforum.ru/ c-beginners/ thread347059.html
Никак не могу разобраться с вроде-бы простой вещью. Создаю массив символов, зануляю его, записываю в него(мне так кажется :))символов введённых с клавиатуры при выводе его(массива) на экран вместо введённых символов выводятся символы ASCII(то есть их номер в таблице)подскажите как с этим бороться или пошлите на какую-нибудь тему, которую я не нашёл, заранее спасибо:) Ниже приведён код маленькой...
C (СИ) Подсчёт количества цифр в целом числе
Напишите программу, которая считывает целое число и определяет (выводя результат на печать), сколько цифр в этом числе равно 7. Думаю задачу нужно решать так: По этому принципу #include <stdio.h> int main(void) { int c,k,t,i;
C (СИ) Переписать программу, чтобы она работала не с текстом, а числами Постараюсь быть максимально конкретным. Прога на языке Си. Здесь (проверено) работающая нормально прога с символами. В одном документе input.txt записано слово. После команды printf("Vvod:\n"); scanf("%s",&word2); это слово копируется во второй документ output1.txt. Код этой проги: #include <stdio.h> #include <string.h> #include <windows.h> #include <malloc.h> https://www.cyberforum.ru/ c-beginners/ thread347038.html C (СИ) Передача массива из main() в функцию и обратно Доброго времени суток, уважаемые форумчане! Пишу на С программку, чтобы отработать на ней передачу массива из main() в функцию и обратно. В функцию вроде передавать получается, обратно в main() перекидывать - нет Можете помочь? Краткое описание программы: в main() задан массив, пересылаем в функцию F, принимаем результат, вывод на экран. Функция F по сути генерация следующего двоичного... https://www.cyberforum.ru/ c-beginners/ thread347032.html
C (СИ) Компиляция в машинные коды без ОС
Здравствуйте. Возможно, я не совсем правильно задаю вопрос, но мне хотелось бы узнать вот что - каким образом можно скомпилировать программу на Си\Си++ не в exe-файл, не в ELF для UNIX, а в машинные коды процессора так, чтобы его можно было запустить в памяти без ОС, например, загрузив одним из загрузчиков (grub и.т.д). Скажем, простейший "Hello,world" #include <stdio.h> int main() {...
C (СИ) Error Добрый вечер. У меня небольшой вопросик, пытался найти подробнее в инете, но результатов не дало. if {Stack: :pop () ! = ' с' ) error {"impossible") ; На error не распознает функции. Вопрос: Если вообще такая функция? Если да, то какую библиотеку нужно подключать. Заранее спасибо. https://www.cyberforum.ru/ c-beginners/ thread346490.html
Заблокирован
Автор FAQ
05.09.2011, 11:20 0

Найти в файле адрес начала заданной последовательности - C (СИ) - Ответ 1961313

05.09.2011, 11:20. Показов 1849. Ответов 3
Метки (Все метки)

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от BadBaddak Посмотреть сообщение
Имеем абсолютный адрес файла, объявлен массив байт - последовательность, которую нужно найти внутри этого файла. Вывести начальный адрес и несколько байт от этого адреса.
- держи простой проект по поиску текста в текстовых файлах (программу для простоты снабдил SHL-диалогом выбора файла, при желании его можно убрать). Поиск подстроки выполняю функцией strstr (для текстовиков это самое оно). Теперь немного о поиске - если читать файл блоками (у тебя это блок - 50 байт), то нужно учитывать что твоя последовательность может быть на разрыве блока и при логике поиска прочёл 50 байт и сравнил с <= 50 байтами (искомой последовательности) не катит, нужно или накапливать считанное или же выполнять сдвиг в считанных 50 байтах и при совпадении с первыми n символами последовательности - читать следующий блок и там продолжать сравнение с позиции n + 1 (считаю данный вариант крайне геморным , поэтому иду по пути считывания всего файла в буфер и работы с ним. Далее - в поиске важен регистр, для strstr он важен, поэтому при поиске в срр программы слова search - программа выдаст search\r, хотя выше есть строка Search nothing. Для поиска без учёта регистра нужно исходный текст и текст для поиска преобразовывать в текст одно регистра (либо строчный , либо прописной - за перевод символа в указанные регистры отвечают функции toupper и tolower)

И в заключении -в случае поиска последовательностей с нулями типа stro'\0'k'\0'a необходимо сдвигать на символ исходный текст и выполнять сравнение - этот алгоритм пока не привожу, если будет желание покажу и как такое делать...
Ниже код и скрин работы
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <windows.h>
#include <shlobj.h>  //Диалог выбора файла
#include <stdio.h>   //i/o
#include <conio.h>   //getch
 
char * SelFile(HWND hWnd);
bool   IsFile(LPCTSTR sPath);
long   FindStr(LPCTSTR sPath, LPCTSTR sFind);
void   ShowBytes(LPCTSTR s, unsigned int nBytes);
 
int main()
{
    char ch;
    char szFilePath[256];
    char szFindText[256];
    HWND hWnd = GetForegroundWindow();//Находим дескриптор окна консоли
    do
    {
        if(!strcpy(szFilePath,SelFile(hWnd)))
            printf("File not selected\r\n");
        else
        {
            if(IsFile(szFilePath))
            {
                printf("File is selected\r\n");
                printf("Enter string to find\r\n");
                //Текст может быть с пробелами
                scanf("%[^\n]%c",szFindText,&ch);
                if(FindStr(szFilePath, szFindText) < 1)
                    printf("Search nothing\r\n");
            }
        }
        printf("Y - Repeat search\r\n");
        ch = getch();
    }
    while(ch == 'Y' || ch == 'y');
    return 0;
}
 
char * SelFile(HWND hWnd)
{
    ShowWindow(hWnd,SW_HIDE);
    char sPath[MAX_PATH];sPath[0] = '\0';
    LPCITEMIDLIST lpItemDList;
    BROWSEINFO bi = {NULL, NULL, sPath,
       "Выберите файл или каталог",
        BIF_DONTGOBELOWDOMAIN|BIF_BROWSEINCLUDEFILES,
        NULL,
        NULL,
        0
    };
    if((lpItemDList = SHBrowseForFolder(&bi)))
    {
        if(SHGetPathFromIDList(lpItemDList, sPath))
            GetShortPathName((LPCTSTR)sPath,sPath,strlen(sPath));
    }
    ShowWindow(hWnd,SW_SHOW);
    return &sPath[0];
}
 
bool IsFile(LPCTSTR sPath)
{
    bool bFile = false;
    FILE * f = fopen(sPath,"rb+");
    if(f)
    {
        bFile = true;
        fclose(f);
    }
    return bFile;
}
 
long   FindStr(LPCTSTR sPath, LPCTSTR sFind)
{
    char * str,*buf;
    long nCount = 0;//Число найденных вхождений sFind
    long fLen = 0;
    FILE * f = fopen(sPath,"rb+");
    if(f)
    {
        fseek(f,0,SEEK_END);//Курсор вконец файла
        fLen = ftell(f);//fLen = длинне файла
        fseek(f,0,SEEK_SET);//Курсор вначало файла
        if(str = (char *)malloc(fLen + 1))//Память сразу под весь текст в файле + '\0'
        {
            fread(str,fLen,1,f);
            str[fLen] = '\0';
            buf = strstr(str,sFind);
            while(buf)
            {
                printf("Found pos : %d ",fLen - strlen(buf));
                ShowBytes((LPCTSTR)buf,8);//Показываем первых 8 найденных байт
                buf = strstr(buf + 1,sFind);
                nCount++;
            }
            free((void *)str);
        }
        fclose(f);
    }
    return nCount;
}
 
void   ShowBytes(LPCTSTR s, unsigned int nBytes)
{
    char * str = (char *)malloc(nBytes + 1);
    if(strlen(s) <= nBytes)
        strcpy(str,s);
    else
        strncpy(str,s,nBytes);
    str[nBytes] = '\0';
    printf(" %d Bytes : %s\r\n",nBytes,str);
    free((void *)str);
}


Вернуться к обсуждению:
Найти в файле адрес начала заданной последовательности C (СИ)
Миниатюры
Найти в файле адрес начала заданной последовательности   Найти в файле адрес начала заданной последовательности  
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2011, 11:20
Готовые ответы и решения:

Найти индексы начала и конца последовательности элементов массива с одинаковыми значениями
Помогите! В заданном массиве из N элементов найти индексы начального и конечного элементов,...

Найти сумму последовательности с заданной точностью
Задание: найти сумму последовательности с точностью 0,001 Я написал код. При запуске - чёрный...

Копирование на каждый компьютер, IP-адрес которого записан в файле, содержимого заданной соответствующей папки
Вот есть батник, копирует содержимое папки на другую машину ip которого вписано в файл ip.txt по...

Поиск в файле заданной последовательности символов
Друзья, помогите плиз!!! Нужно написать программу поиска в файле заданной последовательности...

3
05.09.2011, 11:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2011, 11:20
Помогаю со студенческими работами здесь

Найти адрес начала и конца (для каждой секции), чтобы можно было произвести чтение/запись
в структуре IMAGE_SECTION_HEADER есть такое поле: PointerToRawData, в котором находится RVA начала...

Поиск заданной последовательности символов в бинарном файле
Допустим в файле написано &quot;raz dva tri dva raz raz dva&quot;. Нужно произвести поиск и подсчёт введёной...

Поиск и замена заданной последовательности символов в заданном файле
Программа должна выполнять поиск заданной последовательности символов в заданном файле, менять ее...

В заданной последовательности слов найти все слова, начинающиеся с заданной приставки
В заданной последовательности слов найти все слова, начинающиеся с заданной приставки. Помогите...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru