Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Оксана 1234
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172

Программа с использованием windows.h не находит файла. Не знаю почему

10.10.2013, 18:46. Показов 2362. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа не находит файла. Не знаю почему.
задача:
1.Считывания перечени текстовых файлов из текущей директории с
использованием функций библиотеки windows.h.
2.Организация выбора пользователем файла, содержимое которого он
желает увидеть на экране.


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
#define _WIN32_WINNT 0x0400
#include <windows.h>
const int MAX=10;
#include <stdio.h>
#include <strsafe.h>
#include <malloc.h>
#include <iostream>
FILE*f;
using namespace std;
 
#define BUFSIZE MAX_PATH
 
int main(int argc, char *argv[])
{char a[MAX];
    int i=0;
   WIN32_FIND_DATA FindFileData;
   HANDLE hFind = INVALID_HANDLE_VALUE;
   DWORD dwError;
   
 
   // Find the first file in the directory.
   hFind = FindFirstFile(LPCWSTR("P:\\IF-21\\fi\\*.txt"), &FindFileData);
 
   if (hFind == INVALID_HANDLE_VALUE) 
   {
      printf ("Invalid file handle. Error is %u.\n", GetLastError());
    ;cout<<"Files not found "; return(-1);cout<<endl;
   } 
   else
   {
      printf ("First file name is %s.\n", FindFileData.cFileName);
       i=1;
                        // List all the other files in the directory.
      while (FindNextFile(hFind, &FindFileData) != 0) 
      {
         printf ("Next file name is %s.\n", FindFileData.cFileName);i++;
      }
   
      dwError = GetLastError();
      FindClose(hFind);
      if (dwError != ERROR_NO_MORE_FILES) 
      {
         printf ("FindNextFile error. Error is %u.\n", dwError);
         return (-1);
      }
   }
 
  cout<<"\n"<<i<<endl;
cout<<"Vvedit imia faily;";
cin>>a;
hFind = FindFirstFile(LPCWSTR("P:\\IF-21\\fi\\*.txt"), &FindFileData);
 
char b;
    printf ("First file name is %s.\n", FindFileData.cFileName);
WCHAR c[MAX];
if(c==FindFileData.cFileName)
{    f = fopen("c","r");
    if (f == NULL) perror("error opening file");
    else
    { 
        while ((b=fgetc(f))!=EOF)
             printf("%c", b);
          }
    cout<<endl;
    fclose;return(-1);}
else               // List all the other files in the directory.
{while (FindNextFile(hFind, &FindFileData) != 0) 
      {
         printf ("Next file name is %s.\n", FindFileData.cFileName);
         if(c==FindFileData.cFileName)
         {f = fopen("c","r");
    if (f == NULL) perror("error opening file");
    else
    { 
        while ((b=fgetc(f))!=EOF)
             printf("%c", b);
          }
    cout<<endl;
    fclose;return(-1);
         }
      }
}
   return (0);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2013, 18:46
Ответы с готовыми решениями:

Программа с использованием windows.h не находит файла. Не знаю почему
Программа не находит файла. Не знаю почему. задача: 1.Считывания перечени текстовых файлов из текущей директории с использованием...

Не знаю почему не производит расчёты моя программа!!!
Здравствуйте. Очень хочу попросить помощи в определении ошибки. Сейчас пишу программу, которая уже исправно работает в MathCAD. Необходимо...

Структура С++ нужна допомога, не знаю почему программа не работает, пожалуйста
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include...

30
 Аватар для Оксана 1234
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
13.10.2013, 18:31  [ТС]
Студворк — интернет-сервис помощи студентам
Искала, но не нашла.

Добавлено через 8 минут
Очень большое спасибо, но у меня далее не выводит файлов!
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,855
Записей в блоге: 4
13.10.2013, 20:20
В коде указана фиксированная папка, где искать файлы
Она у вас существует?
если нет, создайте ее или измените путь в коде
0
 Аватар для Оксана 1234
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
13.10.2013, 20:23  [ТС]
У меня существует єта папка. А у вас идет єта программа на комп'ютере?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,855
Записей в блоге: 4
13.10.2013, 20:49
Попробуйте эту функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void OutError() {
    LPVOID lpMsgBuf;
    DWORD err = GetLastError();
    if (!err) return ;
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
        NULL,
        err,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL);
    MessageBox( NULL, (LPTSTR)lpMsgBuf, "Error", MB_ICONINFORMATION );
    LocalFree( lpMsgBuf );
}
она расшифровывает коды ошибок
0
 Аватар для Оксана 1234
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
13.10.2013, 21:00  [ТС]
Опять, ''не может найти файл'', так и выбивает.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,855
Записей в блоге: 4
13.10.2013, 21:16
А список файлов она показывает?
1
 Аватар для Оксана 1234
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
13.10.2013, 21:21  [ТС]
Нет там же return(-1)
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,855
Записей в блоге: 4
13.10.2013, 21:34
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
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdio.h>
//#include <strsafe.h>
//#include <malloc.h>
#include <iostream>
 
#define BUFSIZE MAX_PATH
 // Вывод ошибок WinAPI
void OutError() {
    LPVOID lpMsgBuf;
    DWORD err = GetLastError();
    if (!err) return ;
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
        NULL,
        err,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL);
    MessageBox( NULL, (LPTSTR)lpMsgBuf, "Error", MB_ICONINFORMATION );
    LocalFree( lpMsgBuf );
    SetLastError(0);
}
 
int main(int argc, char *argv[]) {
    FILE*f;
    //const int MAX=10;
    using namespace std;
    char str [BUFSIZE]="*.txt";
    char dir [BUFSIZE]="";
    char path[BUFSIZE]="P:\\IF-21\\fi\\";
    int i=0;
 
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    DWORD dwError;
    
    
    // Find the first file in the directory.
    strcat(dir, path);
    strcat(dir, str);
    hFind = FindFirstFile(dir, &FindFileData);
    
    if (hFind == INVALID_HANDLE_VALUE) {
        printf ("Oshibka poiska: %u.\n", GetLastError());
        OutError();
        //cout<<"Files not found "<<endl;
        return(-1);
    }
    printf("Spisok filov:\n");
    printf("# | imya\n");
    do {
        i++;
        // Выводим файлы
        printf ("%2d %s.\n", i, FindFileData.cFileName);
    } while (FindNextFile(hFind, &FindFileData) != 0); // пока не дойдем до конца списка
    
    dwError = GetLastError();
    FindClose(hFind);
    if (dwError != ERROR_NO_MORE_FILES) {
        printf ("FindNextFile error. Error is %u.\n", dwError);
        OutError();
        return (-1);
    }
 
    cout<<"Vsego: "<<i<<endl;
    cout<<"Vvedit imia faila:";
    cin>>str;
 
    strcat(path, str);
    str[0]='\0';
    f = fopen(path,"r");
    if (f == NULL) // Указан неверный файл
        perror("error opening file");
 
    size_t count=0; // колво считаных символов
    // выводим файл на экран
    while ((count = fread(str, sizeof(char), BUFSIZE-1, f)) != EOF) { // читаем блоками
        str[BUFSIZE-1] = '\0'; // сивол конца строки
        printf("%s", str);
    }
    // ваводим остаток файла
    str[count] = '\0'; // сивол конца строки
    printf("%s", str);
 
    cout<<endl;
    return (0);
}
Немного подправил

Если не будет выводить, то у вас нет либо указаной папки либо в ней нет текстовых файлов
1
 Аватар для Оксана 1234
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
13.10.2013, 21:50  [ТС]
Хоть и далее НЕ находит, говорю вам большое спасибо, вы потратили свое время, а я поняла как делают подобные прогаммы благодаря кода и вашем комментариям, побольше таких людей как вы.
Спасибо!
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,855
Записей в блоге: 4
13.10.2013, 21:56
На последок
Замените строку
C++
1
    while ((count = fread(str, sizeof(char), BUFSIZE-1, f)) != EOF)
на
C++
1
2
str[0] = '\0';
    while ((count = fread(str, sizeof(char), BUFSIZE-1, f)) != 0)
1
 Аватар для Оксана 1234
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
14.10.2013, 19:15  [ТС]
Это моя ошыбка, что программа не роботала, нужно было изменить настройки: проект-> название проекта -> общие-> набор символов (изменения с Использовать набор символов Юникода на Использовать многобайтовую кодировку)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2013, 19:15

Программа не находит файла, расположенного в ее директории
Банальная проблема, но всё же..... чего-то неправильно пишу. imageWindow.Image = Image.FromFile(&quot;foto_1.jpg&quot;); пишет что файл...

Почему программа через раз, находит правильно, минимальные элементы из столбцов?(0 как мин эл-нт мне не нужен)
a:=random(10); write(a:3); end; writeln; end; writeln; for i:=1 to 5 do begin b:=random(5); ...

Почему не работает программа с использованием записей?
Дан список друзей: фамилии, имена, адреса (город, улица, дом, квартира). Требуется: а) найти фамилию человека по заданному адресу; ...

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

Не могу понять, почему программа работает неправильно( Знаю, что где-то ошибки, но не могу найти
{Ввести последовательность натуральных чисел Aj j=1...n (n&lt;=1000). Упорядочить последовательность по неубыванию наименььшей цифры...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru