Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.239.214.173] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Сделал так: int err = 0; int err2 = 0; do { DWORD Len = fread(buffer, sizeof(BYTE), buf, in); fwrite(buffer, sizeof(BYTE), Len, out); err = ferror (in); err2 = ferror (out); if (err != 0) printf("R: %s\r\n", strerror(errno)); if (err2 != 0) printf("W: %s\r\n", strerror(errno)); }while(!feof(in)); Выдаёт "W: Bad file descriptor" |
Сообщ.
#17
,
|
|
|
Это очень просто. Если файл завершился или произошла ошибка - выход из цикла чтения. Поскольку запись в этом случае бессмысленна. А вот потом можно производить тест на ошибки. Поэтому это неверно: Добавлено Цитата Sherman @ Сделал так: int err = 0; int err2 = 0; do { DWORD Len = fread(buffer, sizeof(BYTE), buf, in); fwrite(buffer, sizeof(BYTE), Len, out); err = ferror (in); err2 = ferror (out); if (err != 0) printf("R: %s\r\n", strerror(errno)); if (err2 != 0) printf("W: %s\r\n", strerror(errno)); }while(!feof(in)); Выдаёт "W: Bad file descriptor" Если Len равно 0 всё равно надо выходить из цикла. И потом разбираться с ошибками. |
Сообщ.
#18
,
|
|
|
Как можно реализовать похожую процедуру копирования файла на WIN API?
|
Сообщ.
#19
,
|
|
|
Цитата Sherman @ А зачем? Очередной раз говорю: проверь, что ты используешь многопоточную стандартную библиотеку. Тот факт, что код работает (хотя и написан не без изъянов) у всех, кроме тебя, ни на что не намекает? Совершенно неважно, каков у тебя движок потоков, хоть Плюсовый, хоть никсовый, хоть виндовый; если ты во многопоточном окружении используешь однопоточную CRT, она будет глючить, бажить и падать. Выхода два: первый уже озвучен, второй – вообще отказаться от любых стандартных функций языка. Как можно реализовать похожую процедуру копирования файла на WIN API? |
Сообщ.
#20
,
|
|
|
Цитата Qraizer @ Очередной раз говорю: проверь, что ты используешь многопоточную стандартную библиотеку. Да,но как это проверить? |
Сообщ.
#21
,
|
|
|
Цитата Sherman @ Вот с этим не помогу. Нужен спец по МинГВе. Да,но как это проверить? |
Сообщ.
#22
,
|
|
|
Цитата Qraizer @ Вот с этим не помогу. Нужен спец по МинГВе. Понял.В любом случае,спасибо за помощь. |
Сообщ.
#23
,
|
|
|
Цитата Sherman @ Цитата Qraizer @ Очередной раз говорю: проверь, что ты используешь многопоточную стандартную библиотеку. Да,но как это проверить? Так вот же: командная строка Используем поисковую систему, например www.ya.ru, пишем в строку "-D_REENTRANT". Смотрим, что получится. |