>>Ну тогда что есть s_users[] и какова длина буфера line. Особенно последнее.
>>
>>
>>Кстати, а где изменяется u_index ? :)
>
>Я творчески порезал :-) Он увеличивается, это я тебя могу заверить, проверял,
>дебажил :-)
> char s_users[4][128];
> char line[128];
>
> u_index++ у меня стоит в цикле while, не работает просто как
>раз именно этот кусок. а что вообще этот код должен делать? нет не в общем, а по шагам.
TData_LoginInfo *strLogin;
объявили указатель на структуру
strLogin=(TData_LoginInfo*) malloc(sizeof(strLogin));
выделили память под структуру, но размером с указатель. На это уже внимание обратили.
if((fd = fopen("rreg51.lst", "r"))!=NULL)
{
открыли файл на чтение и проверили, что открылось
fFinish = fopen(fOut, "w" );
открыли файл на запись, но не проверили. может быть позже есть проверка
while((fgets(line,100,fd )!=NULL) && (u_index<8100))
{
читаем из файла по строкам, пока есть что читать и индекс не превысил 8100
sscanf(line,"%s\t%s\t%s\t%s", s_users[0], s_users[1], s_users[2], s_users[3]);
распихали прочитанное по массиву строк.
strLogin=(TData_LoginInfo*) realloc(strLogin, sizeof(strLogin));
перевыделили память под структуру, но опять размером с указатель
strLogin[u_index].login=atoi(s_users[0]);
записываем хрен знает куда, потому что память выделена на 4 байта, примем что размер указателя 4 байта, а конструкция strLogin[u_index] подразумевает, что по strLogin выделена память под u_index * sizeof(структуры) как минимум.
}