вопрос по fwscanf
От: Beatseed Россия  
Дата: 13.02.04 03:37
Оценка:
подскажите пожалуйста
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] и т.п. для выделения фрагментов кода. -- ПК.
Re: Взаимодействие с CMainFrame...
От: IvEv  
Дата: 13.02.04 07:04
Оценка:
Здравствуйте, Beatseed, Вы писали:

[]

B>так вот компилятор при чтении последнего слова — "ввв=ггг" ругается

B>access vialation , read of adress 0xffffffff

B>заранее благодарен


Думаю, что вместо
    fwscanf(in,L"%s",&str)

надо так
    fwscanf(in,L"%s",str);
Один из самых обычных и ведущих к самым большим бедствиям соблазнов есть соблазн словами: "Все так делают".
Лев Толстой
Re[2]: Взаимодействие с CMainFrame...
От: Beatseed Россия  
Дата: 15.02.04 23:19
Оценка:
Здравствуйте, 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*, но тем не менее функция работает также, т.е. читает данные из файла по словам, а на последнем слове выдает вышеописанную ошибку.
Re: вопрос по fwscanf
От: Beatseed Россия  
Дата: 17.02.04 00:17
Оценка:
fwscanf в моем примере, как я понимаю, не определяет конца файла, и пытается читать за отведенной областью памяти. Но это же неправильное поведение, или я чего то не так делаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.