подскажите пожалуйста
FILE *in;
int j;
in= fopen("text","rb");
WCHAR str[100];
WCHAR str2[10];
//читаю такую WCHAR строку "ааа ббб ввв=ггг"
while(!feof(in))
{
fwscanf(in,L"%s",&str);
wcsncpy(str2,str,4);
if((j=wcscmp(str,L"ввв="))==0)
{
break;
}
}
fwscanf(in,L"%s",&str);
wchar_t* str4=wcsrchr(str,L'=');
в итоге хочу получить "ггг"
так вот компилятор при чтении последнего слова — "ввв=ггг" ругается
access vialation , read of adress 0xffffffff
заранее благодарен
Исправлено форматирование. Пожалуйста, пользуйтесь тегами [c] ... [/c], [code] ... [/code] и т.п. для выделения фрагментов кода. -- ПК.
Здравствуйте, Beatseed, Вы писали:
[]
B>так вот компилятор при чтении последнего слова — "ввв=ггг" ругается
B>access vialation , read of adress 0xffffffff
B>заранее благодарен
Думаю, что вместо
fwscanf(in,L"%s",&str)
надо так
fwscanf(in,L"%s",str);
Один из самых обычных и ведущих к самым большим бедствиям соблазнов есть соблазн словами: "Все так делают".
Лев Толстой
Здравствуйте, IvEv, Вы писали:
IE>Здравствуйте, Beatseed, Вы писали:
IE>[]
B>>так вот компилятор при чтении последнего слова — "ввв=ггг" ругается
B>>access vialation , read of adress 0xffffffff
B>>заранее благодарен
IE>Думаю, что вместо
IE>IE> fwscanf(in,L"%s",&str)
IE>
IE>надо так
IE>IE> fwscanf(in,L"%s",str);
IE>
это не помогает, функция работает также, это меня тоже удивило.
В моем примере я ошибочно использовал wchar_t** вместо wchar_t*, но тем не менее функция работает также, т.е. читает данные из файла по словам, а на последнем слове выдает вышеописанную ошибку.
fwscanf в моем примере, как я понимаю, не определяет конца файла, и пытается читать за отведенной областью памяти. Но это же неправильное поведение, или я чего то не так делаю?