С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
2 / 2 / 1
Регистрация: 26.06.2010
Сообщений: 37

Чтение с консоли и запись в файл средствами API

20.07.2011, 08:07. Показов 5995. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно считать с консоли строку и записать ее в файл средствами WIN API (функции readfile, writefile)

Вот так сделал на обычном С
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(){
    char str[80];
    FILE* file;
    scanf("%s", str);
    file = fopen("C:/test/test.txt", "w");
    fprintf(file, "%s", str);
    fclose(file);
    
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2011, 08:07
Ответы с готовыми решениями:

Чтение и запись с консоли
int w = { 1, 2, 3, 4, 5, 6, 7 }; var message = string.Format(&quot;Init {0} {1} {2}&quot;, 20, 20, string.Join(&quot; &quot;, w)); ...

Чтение и запись в консоли
Здравствуйте, могли бы вы подсказать как данное сделать? Мне нужно записать в консоль данные (Учитывая что это dll которая будет...

Чтение с консоли, запись в ArrayList
Доброго времени суток! Кто-нибудь подскажет, чем public static void main(String args) throws IOException { BufferedReader...

5
71 / 76 / 9
Регистрация: 30.06.2011
Сообщений: 176
20.07.2011, 08:21
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main() {
    char str[80];
    scanf("%s", str);
    HANDLE file;
    DWORD RW;
    file = CreateFileA ( "C:\\test\\test.txt", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL);
    if (file == INVALID_HANDLE_VALUE)
       return 1;
    WriteFile ( file, str, strlen(str), &RW, NULL);
    CloseHandle (file);
        return 0;
}
Вот средствами WinApi запись в файл
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
20.07.2011, 08:36
К посту An1ka, могу добавить лишь что для WriteFile необходимо подключение
winbase.h но лучше windows.h...

Можно также ввести проверку корректности записи в файл
C++
1
2
    if(!WriteFile(file, str, strlen(str), &RW, NULL))
        printf("Writing error : %s\r\n",strerror(GetLastError()));
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
20.07.2011, 08:52
Цитата Сообщение от Jino_ Посмотреть сообщение
WIN API чтение с консоли и запись в файл
Значить полностью нужен только WinAPI, даже чтение с консоли, вот ниже начиркал чтение с консоли максимум до 255 символов в строке далее записать в файл.
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
#include <windows.h>
 
 
int main(void) {
 
  HANDLE hin  = GetStdHandle(STD_INPUT_HANDLE);
 
  TCHAR  buf[255];
  DWORD  dr = 0U;
 
  if(ReadConsole(hin, buf, sizeof(buf), &dr, NULL)) {
        FlushConsoleInputBuffer(hin);
 
        buf[dr - 2]  = '\0';
        HANDLE  fp = CreateFile("C:\\tmp.txt", GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
                                  CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
 
        if(fp != INVALID_HANDLE_VALUE) {
                WriteFile(fp, buf, lstrlen(buf), &dr, NULL);
                FlushFileBuffers(fp);
                CloseHandle(fp);
        }
 
  }
  Sleep(1000);
 
  return 0;
}
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
20.07.2011, 09:29
Ну и чтоб уже не привязываться к константному значению величины буффера и вводить текст любой длинны код можно моджернизировать так
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
#include <stdio.h>
#include <windows.h>
 
char * get_text(char * str, int &sLen, char ch_end);
char * str = (char *)malloc(sizeof(char));
 
int main() 
{
    int sLen;
    str = get_text(str, sLen, '\n');
    HANDLE file = CreateFile 
        ( 
            "C:\\test\\test.txt", 
            GENERIC_WRITE, 
            FILE_SHARE_WRITE, 
            NULL, 
            CREATE_ALWAYS, 
            FILE_ATTRIBUTE_NORMAL, 
            NULL
        );
    if (file == INVALID_HANDLE_VALUE)
        return 1;
    DWORD RW;
    if(!WriteFile(file, str, strlen(str), &RW, NULL))
        printf("Writing error : %s\r\n",strerror(GetLastError()));
    CloseHandle (file);
    return 0;
}
 
char * get_text(char * str, int &sLen, char ch_end)
{
    if(str)
    {
        sLen = 0;
        while((str[sLen] = getchar()) != ch_end)
            str = (char *)realloc(str,(1 + (sLen = sLen + 1))*sizeof(char));
        str[sLen] = '\0';
    }
    return str;
}
1
2 / 2 / 1
Регистрация: 26.06.2010
Сообщений: 37
20.07.2011, 19:12  [ТС]
Использую код, написанный xAtom'ом
в результате получаю
'CreateFileW' : cannot convert parameter 1 from 'const char [17]' to 'LPCWSTR'
добавил букву L перед строкой пути - все откомпилировалось (какие-то тонкости с использованием Юникода?)

но
в этос коде я получаю неправильную запись в файл
вместо "abcdefgh" получаю "abcd"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.07.2011, 19:12
Помогаю со студенческими работами здесь

Запись и чтение из файла в консоли
Помогите пожалуйста!!!!! Я не могу записать массив из консоли в файл а потом прочитать( перепробовала уже многое, даже проги писала...

Чтение, запись и обработка текстового файла средствами компонента Memo
Выяснить есть в каждой строке файла буквы для слова “month”. Результат поместить в новый файл в виде: “1” - true; “2” - false; и т.д. ...

Как оставить запись на стене группы Вконтакте от лица авторизованного пользователя средствами API VK?
Добрый день, есть ли способ отправить запись на стену группы от лица пользователя. в приложении типа Веб-сайт или StandAlone? У меня...

Как закачать файл на FTP средствами API
Привет Подскажите как закачать на FTP, ни как не получается этой функцией или ниже FtpPutFile(hURL, PChar(''), PChar(''),0,0); ...

Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление)
Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление). (В файле должно быть не менее 30 строк)....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru