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

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

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

Author24 — интернет-сервис помощи студентам
Программа не находит файла. Не знаю почему.
задача:
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2013, 18:46
Ответы с готовыми решениями:

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

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

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

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

30
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 19:13 2
Я давно не включал женскую логику.., забыл как это делается. Оксана, подскажите пожалуйста, какого файла не находит программа? А еще лучше покажите саму ошибку.
1
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 19:38  [ТС] 3
Подкол засчитан. У меня не находит папки и не выводит имена файлов.

Добавлено через 2 минуты
Ошыбок не выводит
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 19:45 4
У вас приложение не UNICODE, но вы в 22-й строке зачем-то преобразовываете маску файла в формат UNICODE. LPCWSTR тут ни к чему. Дальше по коду есть аналогичные проблемы.
1
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 19:55  [ТС] 5
Я ,конечно ,прошу прощения, но я не поняла что мне делать чтобы исправить ошибку.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 19:56 6
Убери LPCWSTR.
hFind = FindFirstFile( "P:\\IF-21\\fi\\*.txt", &FindFileData);
Остальное по-аналогии.
1
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 20:00  [ТС] 7
error C2664: FindFirstFileW: невозможно преобразовать параметр 1 из "const char [18]" в "LPCWSTR"
Проблемка!
0
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
10.10.2013, 20:04 8
FindFirstFileA попробуйте
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 20:06 9
Я более детально посмотрел код.. такая чушь у вас написана.
C++
1
2
WCHAR c[MAX];
if(c==FindFileData.cFileName)
C++
1
    fclose;return(-1);}
C++
1
2
      printf ("Invalid file handle. Error is %u.\n", GetLastError());
    ;cout<<"Files not found "; return(-1);cout<<endl;
Разберитесь сначала с подобными проблемами. Выровните код чтобы можно было читать. Потом посмотрим.
1
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 20:06  [ТС] 10
Непоняла?
0
castaway
10.10.2013, 20:10
  #11

Не по теме:

Цитата Сообщение от Оксана 1234 Посмотреть сообщение
Непоняла?
Откуда ж мне знать, поняли вы или нет)))

0
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 20:14  [ТС] 12
Цитата Сообщение от castaway Посмотреть сообщение
Я более детально посмотрел код.. такая чушь у вас написана.
Я конечно понимаю, что чушь, но я не понимаю много из этого раздела.
Код подравняла

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
#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 = FindFirstFileA(LPCWSTR("G:\\fi\\debil\\*.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;
                      
 
      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           
        {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
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 20:17 13
Для чего вы сравниваете неинициализированный массив с результатом?
C++
1
2
WCHAR c[MAX];
if(c==FindFileData.cFileName)
fclose это функция, переменная или что-то еще? Что должна делать следующая конструкция?
C++
1
    fclose;return(-1);}
1
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 20:21  [ТС] 14
А за непоняла извините.

Добавлено через 3 минуты
FindFileData.cFileName я думала что это им'я файла и я сравниваю его с тем что вводит пользователь.
fclose ф-ия должна закрыть файл
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 20:24 15
Купите книгу по С++, почитайте как пишутся программы. Я такие вещи в 15 лет знал, и у меня нет никакого желания писать за вас программу и объяснять вам элементарные основы языка.
1
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 20:29  [ТС] 16
Меня учат такие преподаватели, которые не могут найти и понять ошибки. Когда их спрашиваешь они уходят от ответа. Я говорю спасибо, но знайте, всегда нужны хорошие преподаватели которые вовремя смогут тебе все разъяснить.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 20:32 17
В вашем возрасте пора знать что такое самообразование. В интернете куча источников с описанием функций, стандартов, примеров.. Что вам мешает ими пользоваться?
1
4 / 4 / 3
Регистрация: 10.04.2013
Сообщений: 172
10.10.2013, 20:36  [ТС] 18
По windows.h я не нашла хорошых примеров. Мне мешают наверно только мои мозги, ну что ж тут поделаеш. На вашем месте я бы так же сказала, разве какие-то бездари вправе тратить мое время. Потому извините!
0
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
11.10.2013, 00:30 19
Оксана 1234, windows.h - это просто хедер файл. Ищите примеры работы с Win API. Уверен Ваша задача уже решена в интернете
1
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
12.10.2013, 22:24 20
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
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdio.h>
//#include <strsafe.h>
//#include <malloc.h>
#include <iostream>
 
#define BUFSIZE MAX_PATH
 
int main(int argc, char *argv[]) {
    FILE*f;
    //const int MAX=10;
    using namespace std;
    char str[BUFSIZE];
    int i=0;
 
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    DWORD dwError;
    
    
    // Find the first file in the directory.
    hFind = FindFirstFile(LPCSTR("P:\\IF-21\\fi\\*.txt"), &FindFileData);
    
    if (hFind == INVALID_HANDLE_VALUE) {
        printf ("Oshibka poiska: %u.\n", GetLastError());
        //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);
        return (-1);
    }
 
    cout<<"Vsego: "<<i<<endl;
    cout<<"Vvedit imia faila:";
    cin>>str;
 
    f = fopen(str,"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
12.10.2013, 22:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2013, 22:24
Помогаю со студенческими работами здесь

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

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

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

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

Подключение БД: при перемещении mdb-файла вместе с exe-файлом программа не находит базу данных
Помогите решить проблему. Выполнил подключение к БД, но при перемещении файла &quot;Библиотека.mdb&quot;...

Внезапно почему то игры на компьютере начали фризить подлагивать не знаю почему?
Подскажите что не так или программы для теста железа или же как внешне определить неисправность....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru