Срочно помогите плизз WINApi

Статус: Offline
Реєстрація: 04.07.2008
Повідом.: 682
Срочно помогите плизз WINApi

Добрый вечер,помогите решить проблему по программированию.
Задача такова что я читаю из файла данные потом преобразую в широкие символы а далее хочу поместить каждую строку с файла в вектор.Чтобы потом мгновенно читать данные в программе.
Но помещаю а получается так что каждая ячейка массива занимается этим же словом...
Помогите пожалуйста сделать программку.


TCHAR buff33[200]={0};
char str12[900];
TCHAR buff12[900]={0};
char *buff13=new char;
buff13=";";
char* buff14=new char;
buff14=0;
char* token=new char;
token =0;

FILE *stream;
//fopen( "LOGAN.txt","r");

/*p.open("LOGAN.txt",ios_base::out);*/
/*p>>str12;*/

int i=0;



if( fopen_s( &stream, "LOGAN.txt", "r" ) == 0 )

{


fseek(stream,0,SEEK_SET);
buff14=fgets( str12, 100, stream );//передали линией текст
///////////////////////////////////////////////
TCHAR counter=0;
TCHAR arr[200]={0};
token=strtok(buff14,buff13);//разбили по препятствиям ;
while(token!=NULL)
{
TCHAR* g=new TCHAR;


mbstowcs(buff12,token,sizeof buff12);
//SetWindowText(hedit,buff12);
vec1.push_back(buff12);//затолкнули в массив




//MessageBox(NULL,L"",arr,MB_OK);
token=strtok(NULL,buff13);//переключение на след.слово
i++;
}



Если надо могу скинуть весь код программы
 
насколько я понял, ты используешь вектора из STL?
честно говоря мне не сильно с ними понравилось возиться, да и в специфика работы (риалтайм qnx) не позволяет таких вольностей, поэтому просто использую линейные одно или двусвязные списки, чего и тебе желаю в данном случае. если конечно дело принципа, то посоветовать ничего не могу. Я так понял ты считал весь файл в одну строку а потом по токенам эту строку разбиваешь. ты все прочитал про strtok? я тоже когдато с этой функцией сталкивался и все работало. да и еще, советую вашим переменным придать больше информативности, а то както путаешься в buff12, buff13, buff14 и т.п. ))
 
не понял честно говоря описания проблемы...

а по коду вот что бросилось в глаза
mbstowcs(buff12,token,sizeof buff12);

sizeof buff12 возвращает размер указателя а не массива (т.е. это всегда 4). Тут нужно использовать strlen(buff12)

ну и винапи - это слишком громко сказано )))))
 
не понял честно говоря описания проблемы...

а по коду вот что бросилось в глаза


sizeof buff12 возвращает размер указателя а не массива (т.е. это всегда 4). Тут нужно использовать strlen(buff12)

ну и винапи - это слишком громко сказано )))))

Ок щас попробую strlen,ну дело в том что в вектор записывается слово например в первый елемент,а потом идет второе слово и записывается во второй елемент и переписывает почему то первый,

насколько я понял, ты используешь вектора из STL?
честно говоря мне не сильно с ними понравилось возиться, да и в специфика работы (риалтайм qnx) не позволяет таких вольностей, поэтому просто использую линейные одно или двусвязные списки, чего и тебе желаю в данном случае. если конечно дело принципа, то посоветовать ничего не могу. Я так понял ты считал весь файл в одну строку а потом по токенам эту строку разбиваешь. ты все прочитал про strtok? я тоже когдато с этой функцией сталкивался и все работало. да и еще, советую вашим переменным придать больше информативности, а то както путаешься в buff12, buff13, buff14 и т.п. ))

Да вектор.
Я читаю первую строку из файла и разбиваю по словам,потом перевожу в широкие символы и записываю в массив,но как то оно не так записывается в массив((

Вот использовал mbstowcs(buff12,token,wcslen( buff12));

Но все равно ничего не получается((((

Вот весь код программы исправьте если сможете
Посилання видалено
 
Назад
Зверху Знизу