所以我试图按照提供的顺序组合任意数量的给定文件,并将输出打印到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));
}
答案 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]);
}
}
}