Указатели на структуры, передач структур функциям

  • Автор темы BobiKK
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

BobiKK

#1
Моя начал изучать Си. Но уже в самом начале моя запутался и никак не распутаться.
Идея: прочитать файл /var/run/utmp используя как можно меньше системных вызовов. Т.е, используя буферизацию
Код:
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <utmp.h>

#define NRECS 16
#define BUFSIZE (sizeof(struct utmp)* NRECS)


int utmp_next(int fd_utmp, struct utmp *curr_utmp)
{
static char tmp_utmp[BUFSIZE];
static int result;
static int curr_rec = 0;
if (curr_rec == 0)
{
result = read(fd_utmp, tmp_utmp, BUFSIZE);
if (result == 0) return 0;
result = result/sizeof(struct utmp);
}
curr_utmp = (struct utmp *) &tmp_utmp[curr_rec * sizeof(struct utmp)];
if (curr_rec < result)
curr_rec++;
else curr_rec = 0;

return 1;
}

void show_utmp(struct utmp *utshow)
{
printf("%s\t", utshow->ut_name);
printf("%s\t", utshow->ut_line);
printf("\n");
}


int main (int arvg, char *argc[])
{
int fd;
int count;
struct utmp res_utmp;
fd = open(UTMP_FILE, O_RDONLY);
int i;
while (utmp_next(fd, &res_utmp) != 0)
{
show_utmp(&res_utmp);
}
return 0;
}
gcc вроде бы не ругается, но и вывода никаого нету. Только '\n'
 
Статус
Закрыто для дальнейших ответов.