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

Лишний мусор в переменной - C++

Восстановить пароль Регистрация
 
snyppimylt
 Аватар для snyppimylt
7 / 7 / 1
Регистрация: 18.12.2011
Сообщений: 400
08.03.2014, 15:21     Лишний мусор в переменной #1
В кратце:
Функция принимает 2 локальных адреса
C++
1
2
char txtpathL[100]="C:\\55";
char Btxtpath[100]="C:\\temp";
во втором адресе он ищет определенный файл, он его считывает и записывает нужную стоку к адресу в переменной чтобы потом обратиться уже к собранному адресу по частям и выяснить есть ли нужный мне файл.

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
#define J 100
int MProfile_INI(char* LocPath, char* BrowPath) 
{
    int j=0;
    char txtINI[J];
    char txtINIs[J];
    char BrowMozil_BK[J];
    char BrowMozil_BKs[J];
    char LOCMozil_DIM[J];
    char LOCMozil_DIMs[J];
// переменные используются в качестве резерва
strcpy(BrowMozil_BK,BrowPath);
strcpy(LOCMozil_DIM, LocPath);
strcat(BrowPath,"\\profiles.ini");
 
ifstream prifINI(BrowPath);
prifINI.seekg(91);
if(prifINI.rdstate()!=0)    
    return 0;
else
    {
    
while(!prifINI.eof())
{
    j=j+1;
prifINI>>txtINI;
if(j==1)
strcpy(txtINIs,txtINI);
}   
}
    cout<<txtINIs;
 
strcat(BrowMozil_BK,"\\Profiles\\");
strcat(BrowMozil_BK,txtINIs);
strcat(BrowMozil_BKs,BrowMozil_BK);
strcat(BrowMozil_BK,"\\name.sqlite");
strcat(BrowMozil_BKs,"\\name2.sqlite");
strcpy(LOCMozil_DIMs,LOCMozil_DIM);
strcat(LOCMozil_DIM, "\\name.sqlite");
strcat(LOCMozil_DIMs,"\\name2.sqlite");
 
if(CopyFile(BrowMozil_BK,LOCMozil_DIM,0)==0 && CopyFile(BrowMozil_BKs,LOCMozil_DIMs,0)==0)
RemoveDirectory(LocPath);
 
//delete [] txtINI;
//delete [] LOCMozil_DIM;
//delete [] LOCMozil_DIMs;
//delete [] BrowMozil_BK;
//delete [] BrowMozil_BKs;
// ранее писал их как динамический массив но он мне выдавал ошибку : Ошибка компиляции:ОС Windows инициировала точку останова
cout<<"\n\n\n\n\n";
cout<<"txtINI "<<txtINI <<endl;
cout<<"LOCMozil_DIM "<< LOCMozil_DIM<<endl;
cout<<"LOCMozil_DIMs "<<LOCMozil_DIMs <<endl;
cout<<"BrowMozil_BK "<<BrowMozil_BK <<endl;
cout<<"BrowMozil_BKs "<< BrowMozil_BKs<<endl;
return 1;
}
 
...
 
int main()
{
    
    char txtpathL[100]="C:\\55";
    char Btxtpath[100]="C:\\temp";
 
    MProfile_INI(txtpathL,Btxtpath);
 
    getch();
return 0;
}
Все бы ни чего, но не понятно одно, откуда мусор в переменной массива BrowMozil_BKs?
если что-то не понятно, спрашивайте, я объясню
vs2008
Миниатюры
Лишний мусор в переменной  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2014, 15:21     Лишний мусор в переменной
Посмотрите здесь:

C++ Мусор в файлах
Мусор C++
Лишний символ при компиляции C++
C++ Список, выводит лишний нолик
C++ Мусор в строке
Лишний раз выводит сообщение C++
Мусор в переменной C++
C++ Мусор в массиве
Почему переменной присваивается произвольное значение("мусор")? C++
Fputc() записывает лишний байт C++
C++ Подскажите как сделать, чтобы не выводился лишний мусор?
C++ Мусор в консоли

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fene4ka_
87 / 87 / 16
Регистрация: 24.01.2014
Сообщений: 1,184
08.03.2014, 15:50     Лишний мусор в переменной #2
snyppimylt, пошагово посмотреть самому ?
zss
Модератор
Эксперт С++
 Аватар для zss
6055 / 5658 / 1828
Регистрация: 18.12.2011
Сообщений: 14,451
Завершенные тесты: 1
08.03.2014, 15:50     Лишний мусор в переменной #3
Строка 35:
Цитата Сообщение от snyppimylt Посмотреть сообщение
strcat(BrowMozil_BKs,BrowMozil_BK);
strcat присоединяет к строке, которой ничего ранее не присваивалось.
Надо заменить на strcpy
snyppimylt
 Аватар для snyppimylt
7 / 7 / 1
Регистрация: 18.12.2011
Сообщений: 400
08.03.2014, 15:59  [ТС]     Лишний мусор в переменной #4
Цитата Сообщение от zss Посмотреть сообщение
Строка 35:
Сообщение от snyppimylt
strcat(BrowMozil_BKs,BrowMozil_BK);
strcat присоединяет к строке, которой ничего ранее не присваивалось.
Надо заменить на strcpy
Спасибо, а можете объяснить почему с динамическим выделением массивов в куче при их чистке вылетает Ошибка компиляции:ОС Windows инициировала точку останова ?
zss
Модератор
Эксперт С++
 Аватар для zss
6055 / 5658 / 1828
Регистрация: 18.12.2011
Сообщений: 14,451
Завершенные тесты: 1
08.03.2014, 16:02     Лишний мусор в переменной #5
Скорее всего вышли за границы массивов.
Yandex
Объявления
08.03.2014, 16:02     Лишний мусор в переменной
Ответ Создать тему
Опции темы

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