C语言 用强力接我离开的地方

  • 本文关键字:我离开 语言 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);

如何解决这个问题?谢谢! !

你需要增加指针:

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);
   ...

相关内容

  • 没有找到相关文章

最新更新