Форум программистов, компьютерный форум CyberForum.ru

Функция fopen возвращает нулевой указатель (Visual Studio) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти max и min по длине слово http://www.cyberforum.ru/cpp-beginners/thread106640.html
такая задача. помогите плиз _______________________________ дана строка символов. найти в ней max и min по длине слово и заменить их на подстроки "max" и "min" соответственно, при необходимости сдвинув символы ___ заранее спасибо
C++ передача в функцию Здрасти. ifstream in("1.txt"); что возвращает in? как передать этот поток (in) в функцию которая выводит символы? void readFile( ???????????? ){ char ch; while (in){ http://www.cyberforum.ru/cpp-beginners/thread106631.html
В каждой строке двухмерного массива определить наибольший элемент и подсчитать сумму этих максимальных элементов C++
В каждой строке двухмерного массива определить наибольший элемент и подсчитать сумму этих максимальных элементов.
C++ Проверка баланса фигурных скобок абстрактным стеком (реализованным в виде связного списка)
вот собственно задание: задан текст, содержащий три типа скобок - (), {}, . Программа должна проверить правильность расстановки скобок в тексте, а также, не нарушены ли правила вложенности скобок....:gsad:
C++ прога на С++,связанная с файлами http://www.cyberforum.ru/cpp-beginners/thread106621.html
Напишите программу, которая считывает произвольный текстовый файл, содержащий длинные строки и копирует его содержимое в новый файл, при этом разбив длинные строки таким образом, чтобы длина результирующих строк не превышала 80 символов. При этом нельзя разбивать целое слово на части. Если встречается слово, состоящее более чем из 80 символов, его нужно вывести на отдельной строке не разбивая на...
C++ программа на С++ Напишите программу, которая считывает произвольный текстовый файл и создает новый файл, в который записывает считанные из входного файла строки в алфавитном порядке. Имя входного и результирующего файла передается в программу через командную строку. Заранее большое спасибо подробнее

Показать сообщение отдельно
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 13:08  [ТС]     Функция fopen возвращает нулевой указатель (Visual Studio)
Цитата Сообщение от M128K145 Посмотреть сообщение
GAME, а код можно увидеть?
вы действительно хотите этого?))) там 1800+строк))) ну ладно.ща вырежу,то,что нужно.

Добавлено через 9 минут
Собственно проблема тут.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void SaveToFileLvl_Tech(tech *tec)
{
    FILE *fl;
    char flink[75]={"dbase.module/\0"};
    char *str;
    str=new char[strlen(tec->father->cname)+1];
    copy_rc(str,tec->father->cname,' ','_');
    strcat(flink,str);
    delete str;
    strcat(flink,".txt");
    fl=fopen("dbase.module/Vodafone_McLaren_Mercedes1.txt\0","w");
          // fl=fopen(flink,"w");
    //fputc(' ',fl);
    Fprint_Tech(tec,Buf);
    fclose(fl);
}

Это происходит раньше со списком.(формирование списк,и добавление к нему новых эл-в)
Вот так фаил открываеться и из него читаеться инфа.
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
tech *AddFromFile_LvlTech(tech *to,general *ptr)
{
    FILE *from;
    char ch;
    char *str;
    char flink[75]={"dbase.module/\0"};
    char mark[60],pilot[60],cntry[60],photo[MAX_PATH],nums[10],pts[10];
    int num,point;
    if(!ptr) return to;//Ошибка - нету гл. уровня   
    str=new char[strlen(ptr->cname)+1];
    copy_rc(str,ptr->cname,' ','_');
    strcat(flink,str);
    delete str;
    strcat(flink,".txt\0");
    to=NULL;
    if(!(from=fopen(flink,"r+"))) 
    {
        strcpy(ErrorMessg," Ошибка.\n Не найден файл \n\0");
        strcat(ErrorMessg,flink);
        if(MessageBoxA(MainWindow,ErrorMessg,"Ошибка.",MB_OKCANCEL)!=IDOK)
            return NULL; //Ошибка открытия файла
        else 
        {
            //CreateFile(flink,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
            from=fopen(flink,"a+");
            fputc(' ',from);
        }
    }
    else
    {
        TechFile=from;
        fgetc(from);
        str=from->_ptr;
        while(1)
        {
            /*str=decode(from->_ptr);*/
            str=copy_c(';',nums,str);
            str=copy_c(';',pts,str+1);
            str=copy_c(';',pilot,str+1);
            str=copy_c(';',mark,str+1);
            str=copy_c(';',cntry,str+1);
            str=copy_c('#',photo,str+1);
            sscanf(nums,"%i",&num);
            sscanf(pts,"%i",&point);
            if(!(to=AddTech(to,pilot,mark,photo,cntry,num,point,ptr)))
            {
                strcpy(ErrorMessg," Ошибка\n Невозможно выделить память под новый элемент\0");
                return NULL;
            }
            *str++;
            if(*str++=='&')
                continue;
            else
                break;
        }
    }   
    fclose(from);
    return to;
}
Вот после работы этого участка кода фаил не открываеться.
1)вызов фун-и добавления при нажатии кнопки добавить новый эл-т.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if(wParam==ID_ADD_TEC_FORM_B2)
        {
            GetDlgItemTextA(hWnd,ID_ADD_TEC_FORM_E1,pname,59);
            GetDlgItemTextA(hWnd,ID_ADD_TEC_FORM_E2,car,59);
            GetDlgItemTextA(hWnd,ID_ADD_TEC_FORM_E3,pos,59);
            GetDlgItemTextA(hWnd,ID_ADD_TEC_FORM_E4,pts,59);
            GetDlgItemTextA(hWnd,ID_ADD_TEC_FORM_E5,cntry,59);
            if(!*pname || !*car || !*pos || !*pts || !*cntry)
            {
er:             MessageBoxA(hWnd,"Заполните все поля!","Ошибка.",MB_OK);
                InvalidateRect(hWnd,NULL,RDW_ERASE);
                break;
            }
            sscanf(pos,"%i",&point);
            sscanf(pts,"%i",&num);          
            if(!ShowOpenDialog(hWnd,pht,"Выберите файл","dbase.module/",".bmp"))
                goto er;
            Main_Tech=AddTech(Main_Tech,pname,car,pht,cntry,num,point,printGen);
            printTech=Main_Tech;
            DestroyWindow(hWnd);
            break;
        }
Сама функция добавления
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
tech *AddTech(tech *tch,char *pilot,char *mark,char *photo,char *cntry,int num,int pts,general *faz)
{
    tech *tmp;
    try
    {
        tmp=new tech;
    }
    catch(bad_alloc xa)
    {
        return NULL;
    }
    tmp->downA=NULL;
    tmp->downE=NULL;
    tmp->downS=NULL;
    tmp->downT=NULL;
    tmp->father=faz;
    strcpy(tmp->pilot,pilot);
    strcpy(tmp->mark,mark);
    strcpy(tmp->photo,photo);
    strcpy(tmp->country,cntry);
    tmp->num=num;
    tmp->points=pts;
    tmp->next=tch;
    return tmp;
}

ВОТ сама структура tech
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
typedef struct tech
{
    unsigned int num;
    unsigned int points;
    char pilot[60];
    char mark[60];
    char country[60];
    char photo[MAX_PATH];
    engine *downE;
    transm *downT;
    suspen *downS;
    airdyn *downA;  
    tech *next;
    general *father;
};
Всё палево происходит тогда,когда добавляешь новый элемент.Если ничего не меняя сохранять все норм.Там где идёт открытие файла пробовал жестко задавать путь и по разному.Файл на месте ,никуда не деваеться.

Добавлено через 7 часов 15 минут
.......

Добавлено через 2 часа 23 минуты
Всё.В топку)
Сделал винАПИшными функциями.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void SaveToFileLvl_Tech(tech *tec)
{
    char flink[75]={"dbase.module/\0"};
    char *str,*Buf;
    DWORD tmp0;
    Buf = new char[GetTechNumbers(Main_Tech)*460+1];
    str=new char[strlen(tec->father->cname)+1];
    copy_rc(str,tec->father->cname,' ','_');
    strcat(flink,str);
    delete str;
    strcat(flink,".txt");
    sprintf(Buf," ");
    HANDLE FileHandle;
    FileHandle=CreateFile("dbase.module/Vodafone_McLaren_Mercedes.txt\0",GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL , 0);
    Fprint_Tech(tec,Buf);
    WriteFile(FileHandle,Buf,strlen(Buf),&tmp0,NULL);
    CloseHandle(FileHandle);
}
Добавлено через 14 минут
Казалось бы.НО,проблема осталась.ААААААААААААААААААААААААААААААААААААААААААААААААА

Добавлено через 15 минут
НАшел проблему.Блин.Как так.Проблема где - то в этой функции. Можете посмотреть где ?
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
char *ShowOpenDialog(HWND HWndOwner, char *FileName, char *Title,char *InitialDir, char *Filter) 
{ 
    OPENFILENAME ofn; 
    ZeroMemory(&ofn, sizeof(OPENFILENAME)); 
 
    char szFile[MAX_PATH]; 
    char oFile[MAX_PATH];
    ZeroMemory(szFile, MAX_PATH); 
 
    // инициализация OPENFILENAME 
    ofn.lStructSize = sizeof(OPENFILENAME); 
    ofn.hwndOwner = HWndOwner; 
    ofn.lpstrFile = (LPSTR)szFile; 
    ofn.nMaxFile = MAX_PATH; 
    ofn.lpstrFilter =(LPSTR) Filter; 
    ofn.nFilterIndex = 0; 
    ofn.lpstrTitle = (LPSTR)Title; 
    ofn.lpstrInitialDir =(LPSTR) InitialDir; 
    ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST; 
 
    // Отображаем окно Open dialog. 
    if (GetOpenFileName(&ofn)) 
    { 
        //strcpy(FileName, (char *)ofn.lpstrFile);
        memcpy(FileName,ofn.lpstrFile,MAX_PATH);
        //copy_rc(FileName,oFile,'\','\');
        FileName=ofn.lpstrFile;
        return ofn.lpstrFile; 
    } 
    return false; 
}
Добавлено через 1 час 23 минуты
ну?кто поможет?)

Добавлено через 12 часов 45 минут
 
Текущее время: 11:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru