如何正确地扫描结构中定义的缓冲区?

时间:2013-06-05 18:23:04

标签: c pointers buffer structure fgets

这是我的结构:

struct Data{
   char *buffer[MAXBUFF];
   int bufferSize;
};

这就是我调用我的函数searchInFile的方法:

searchInFile(logFile, outFile, &dat);

这是searchInFile函数本身:

void searchInFile(FILE *logFile, FILE *outFile, struct Data *dat){
   FILE *srcFile = fopen("src.txt", "r");

   if(!srcFile){
      printf("Nepavyko atidaryti \"src.txt\" failo.\n");
      fprintf(logFile, "Nepavyko atidaryti \"src.txt\" failo.\n");
      fclose(srcFile);
      return;
   } else {
      fprintf(logFile, "Failas \"src.txt\" atidarytas sekmingai.\n");
   }

   while(!feof(srcFile)){
      fgets((*dat).buffer, MAXBUFF, srcFile);
      printf("%s", dat->buffer);
   }

   fclose(srcFile);
}

我要做的是将字符扫描到缓冲区,缓冲区在结构中定义。我收到警告,说我从不兼容的指针类型传递'fgets'的参数。如何正确扫描?

2 个答案:

答案 0 :(得分:1)

fgets的第一个参数应为char *

所以你需要从

修复结构定义
struct Data{
   char *buffer[MAXBUFF];
   int bufferSize;
};

struct Data{
   char buffer[MAXBUFF];
   int bufferSize;
};

答案 1 :(得分:0)

您应该从buffer删除指针:

struct Data{
   char buffer[MAXBUFF];
   int bufferSize;
};