Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
39 / 14 / 1
Регистрация: 11.05.2010
Сообщений: 139

Написать программу удаления (с подтверждением/отменой) всех файлов

02.10.2011, 22:55. Показов 2069. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
10-час бьюсь с этой прогой. То конвертировать из одного типа данных в дрогой не может то ещё что-то.

Написать программу удаления (с подтверждением/отменой) всех файлов, заданных 2-м, 3-м, …, n-м
(n <8) параметрами командной строки, в которых более k раз (k задано последним параметром командной строки) встретилось слово, заданное первым параметром командной строки.

-следует использовать символы Unicode;
-предусмотреть возможность вывода результатов на консоль и перенаправления стандартного вывода, а также возможность ввода с клавиатуры и перенаправления стандартного ввода. Для перенаправления следует предусмотреть символы, которые пользователь будет, при необходимости, указывать в командной строке.

Суть - запустить через командную строку exe-файл программы 0-параметр, 1-параметр это слово для поиска в файлах, все последующие это названия файлов где искать.
Логика и суть ясна. Мешает юникод, все просто портит специфическими типами данных LPCWSTR/LPCSTR и прочая фигня , как только такие длинные названия придумали.

Добавлено через 2 часа 9 минут
Цитата Сообщение от HDR Посмотреть сообщение
10-час бьюсь с этой прогой. То конвертировать из одного типа данных в дрогой не может то ещё что-то.

Написать программу удаления (с подтверждением/отменой) всех файлов, заданных 2-м, 3-м, …, n-м
(n <8) параметрами командной строки, в которых более k раз (k задано последним параметром командной строки) встретилось слово, заданное первым параметром командной строки.

-следует использовать символы Unicode;
-предусмотреть возможность вывода результатов на консоль и перенаправления стандартного вывода, а также возможность ввода с клавиатуры и перенаправления стандартного ввода. Для перенаправления следует предусмотреть символы, которые пользователь будет, при необходимости, указывать в командной строке.

Суть - запустить через командную строку exe-файл программы 0-параметр, 1-параметр это слово для поиска в файлах, все последующие это названия файлов где искать.
Логика и суть ясна. Мешает юникод, все просто портит специфическими типами данных LPCWSTR/LPCSTR и прочая фигня , как только такие длинные названия придумали.
Вот кое-какие нюансы убрал, но остаётся вопрос почему value не совпадает при стравнение buffer,
хотя для этого созданы все условия?

1-й параметр комстроки "аааа"
2-й параметр файл.txt, внутри которого строка "аааа"

почему при сравнении (функция _wcsicmp(value, buffer)) не даёт положительных результатов?
так же при выводе в консоль отдельно друг от друга value и buffer выводится на экран строки не полностью, да и ёще с мусором?

Никто не подскажет? Ну хотя бы пару слов.

вот кстати код, лишнеее выкинул, оставил только саму суть:

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
#define UNICODE
#define _UNICODE
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<locale.h>
#include<stdlib.h> 
 
void main(int argc, char* argv[])
{
    setlocale(LC_CTYPE,"RUS");
 
    HANDLE input;
    DWORD hInput;
    
    
    
 
    wchar_t nameInput[64];
    wchar_t buffer[4];
    wchar_t value[4];
    mbstowcs (value, argv[1], 4);
    mbstowcs (nameInput, argv[2], 64);
 
    input = CreateFile(nameInput,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
    if(input==INVALID_HANDLE_VALUE) printf("Error");
 
    ReadFile(input,buffer,4,&hInput,NULL);
 
    //int wcscmp(const wchar_t *s1, const wchar_t *s2);
    int compare =_wcsicmp(value, buffer);
    printf("\n\n%d",compare);
 
    //CloseHandle(input);
    //DeleteFile(nameInput);
 
 
 
getch();
 
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2011, 22:55
Ответы с готовыми решениями:

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

Многочисленные окошки с подтверждением удаления файла
Здравствуйте! После загрузки Windows 7 появляются окошки с подтверждением удаления файла. На один и тот же файл множество окон. Файлы...

Написать программу удаления всех элементов строки с номером k и столбца с номером 1 заданной матрицы
Написать программу удаления всех элементов строки с номером k и столбца с номером 1 заданной матрицы A, состоящей из n строк и m столбцов.

5
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
02.10.2011, 23:40
Строки в С++, если представляются массивом, должны оканчиваться '\0'.
В коде же, все 4 символа в массивах занимают символы, и нет места для завершающего символа.
Решение: всегда оставлять в конце место для завершающего ноль-символа, и не забывать его туда записывать, если его нет.
Это по поводу мусора в строках. Кстати поэтому же они могут и не сравниваться.
А обязательно для решения поставленной задачи использовать API функции?
1
39 / 14 / 1
Регистрация: 11.05.2010
Сообщений: 139
02.10.2011, 23:47  [ТС]
Цитата Сообщение от Liraim Посмотреть сообщение
Строки в С++, если представляются массивом, должны оканчиваться '\0'.
В коде же, все 4 символа в массивах занимают символы, и нет места для завершающего символа.
Решение: всегда оставлять в конце место для завершающего ноль-символа, и не забывать его туда записывать, если его нет.
Это по поводу мусора в строках. Кстати поэтому же они могут и не сравниваться.
А обязательно для решения поставленной задачи использовать API функции?
Точно. Что-то закопался. Спасибо. А про API, то это так по заданию нужно. Дисциплина ОС.
0
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
02.10.2011, 23:50
Тогда понятно, просто, насколько я помню, в Unicode файлах может быть мусор в начале файла. Так у меня пример твой не сразу начал читать правильно с файла.
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
03.10.2011, 07:18
Цитата Сообщение от HDR Посмотреть сообщение
Мешает юникод, все просто портит специфическими типами данных LPCWSTR/LPCSTR и прочая фигн, как только такие длинные названия придумали.
Никто вам не мешает использовать более "короткие" аналоги:

LPCWSTR
wchar_t const*
LPCSTR
char const*

А вообще, если разобраться в сокращениях, то это не вызывает никаких проблем:
LPCWSTR - Long Pointer to Constant Wide STRing
LPCSTR - Long Pointer to Constant STRing (подразумевается ANSI)
LPCTSTR - Long Pointer to Constant Text STRing (в зависимости от определения UNICODE может быть строкой как Unicode, так и ANSI символов).
В большинстве подобных названий типов первую букву L можно опускать, т.е. использовать PWSTR, PSTR и т.д.

Что бы не заниматься такой фигней:
Цитата Сообщение от HDR Посмотреть сообщение
mbstowcs (value, argv[1], 4); mbstowcs (nameInput, argv[2], 64);
Определите точку входа так:
C
1
2
3
4
int wmain(int argc, wchar_t* argv[])
{
/...
}
Еще заметил вот. Занятная у вас логика:
C
1
2
3
4
5
6
// Пытаемся открыть файл
input = CreateFile(...);
// Если файл не открыли, то сообщаем об этом ...
if (input==INVALID_HANDLE_VALUE) printf("Error");
// ... и все равно пытаемся читать его
ReadFile(...);
1
 Аватар для Aneron
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
03.10.2011, 21:58
раз мешает юникод то убери его в настройках проекта и работай с char
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2011, 21:58
Помогаю со студенческими работами здесь

Написать программу, которая выводит на экран список всех файлов
Написать программу, которая выводит на экран список всех файлов текущего каталога с датой и временем их последнего обновления.

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

Поиск и удаления всех файлов с расширением doc и xls
Нужно провести поиск по всему компьютеру и найденные файлы с расширением word 2003(doc), excel 2003(xls), и word 2007(dosx), excel...

Поиск в Delphi. Написать программу для поиска всех файлов и каталогов, названия которых начинаются на заданную букву
Поиск в Delphi. Написать программу для поиска всех файлов и каталогов, названия которых начинаются на заданную букву

Вывести названия файлов с подтверждением
Начиная из домашнего каталога, вывести в полном формате на экран все названия файлов и папок, которые начинаются на 'm'. При этом перед...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru