C(UNIX),组合文件(字节数)

时间:2017-01-31 02:33:04

标签: c unix command-line command

所以我试图按照提供的顺序组合任意数量的给定文件,并将输出打印到std输出。文件名和规范通过UNIX命令行给出。我完全输入验证工作,我只是在弄清楚如何将我的思想融入C语法(我以前从未在C中编码)。

& g将整合整个文件 & qN(N是整数)将仅组合前N个字节 & uN(N是整数)将仅合并最后N个字节

我认为最好的方法是用fopen打开文件,弄清楚它有多大,然后创建一个大缓冲区,然后读入缓冲区(使用fread)并写入缓冲区(使用fwrite)。我觉得解决方案很简单,不应该只是几行。

我对第一个规格& g的尝试如下。我只能到目前为止,因为这对我来说是一种非常新的语言。

FILE *fp;
fp = fopen(file, "r");

// if file fails to open - file is not found
if (fp == NULL)
{
    perror("file %s does not exist", file);
}
else
{
    fseek(fp, 0L, SEEK_END);
    file_sz = ftell(fp);
    fseek(fp, 0L, SEEK_SET);
    buffer = malloc(sizeof(file_sz));
 }

1 个答案:

答案 0 :(得分:0)

以下是一个基本的例子,可以用来获得好的东西。

#include <stdio.h>
#include <strings.h>
#include <string.h>
#include <stdlib.h>

char buffer[1001]; // NYI - no magic numbers. Static size....

int main(int argc, char** argv) {
  bzero(buffer, sizeof(buffer));
  for(int x=1; x<argc; x++) {
    FILE *fp = fopen(argv[x], "r+");
    if (fp) {
      while(fgets(buffer, 1000, fp)) { // NYI - no magic numbers 
        printf("%s", buffer);
      }
    } else {
      printf("could NOT open file %s\n", argv[x]);
    }
  }
}