Использование strncpy, чтобы забрать, где я остановился
У меня есть буфер символов - char buff[1000]
и пытаюсь использовать strncpy
прочитать первые 16 символов и сохранить его как часть списка, а затем прочитать следующие 24 символа и сохранить его как другую часть списка. Тем не менее, когда я звоню strncpy
дважды, второй strncpy
восходит к началу буфера, а не там, где я остановился после первого strncpy
,
char buff[1000];
14 struct List list;
15 initList(&list);
16
17 struct Node *node = NULL;
18 while (!feof(myf) == 1){
19 fread(buff, 40, 1, myf);
20 struct MdbRec *newRec;
21 newRec = (struct MdbRec *)malloc(sizeof(struct MdbRec));
22 if (newRec == NULL){
23 exit(1);
24 }
25 strncpy(newRec->name, buff, 16);
26 strncpy(newRec->msg, buff, 24);
27
28 node = addAfter(&list, node, newRec);
Как это исправить? Спасибо!!!
1 ответ
Решение
Вам нужно увеличить указатель:
while (!feof(myf) == 1){
fread(buff, 40, 1, myf);
...
char *p = buff;
strncpy(newRec->name, p, 16);
p += 16;
strncpy(newRec->msg, p, 24);
...
... или же...
while (!feof(myf) == 1){
fread(buff, 40, 1, myf);
...
int i=0;
strncpy(newRec->name, &buff[i], 16);
i += 16;
strncpy(newRec->msg, &buff[i], 24);
...