我是 C 编程的初学者,我正在尝试编写一个程序来读取 /proc/ 中“stat”文件的值。它适用于前几个条目,但随后返回“分段错误(核心转储)”。到目前为止,我发现该错误与内存分配有关,但我似乎无法找到解决方法。到目前为止,我的代码是:
char* readFile(char* filename)
{
 FILE *fp;
    struct stat buf;
    fp=fopen(filename,"r");
    stat(filename,&buf);
    char *string = malloc(buf.st_size);
    char *s;
    while(!feof(fp))
    {
            s=malloc(1024);
            fgets(s,1024,fp);
            s[strlen(s)-1]='\0';
            strcat(string,s);
    }
    return string;
}
char* readStat(char* path, int statNumber)
{
  char* str = malloc(sizeof(readFile(path)));
  str = readFile(path);
  char * pch = malloc(sizeof(str));
  char * vals;
  pch = strtok (str," ");
  int i = 1;
  while (pch != NULL)
  {
  if(i == statNumber)
        vals = pch;
    pch = strtok(NULL, " ");
    i++;
  }
  return vals;
}