【问题标题】:How to scan buffer, which is defines in structure, correctly?如何正确扫描结构中定义的缓冲区?
【发布时间】:2013-06-05 18:23:03
【问题描述】:

这是我的结构:

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”的参数。如何正确扫描?

【问题讨论】:

    标签: c pointers buffer structure fgets


    【解决方案1】:

    fgets 的第一个参数应该是 char *

    所以你需要从

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

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

    【讨论】:

      【解决方案2】:

      你应该从buffer中删除指针:

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

      【讨论】:

        猜你喜欢
        • 2012-05-23
        • 1970-01-01
        • 2014-10-31
        • 2013-04-13
        • 2020-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        相关资源
        最近更新 更多