带有选项的C中的tee命令

时间:2014-12-03 10:18:47

标签: c command tee

我在C中有命令tee,我应该添加选项-a:支持-a选项文件,这会导致将正在读取的数据添加到文件末尾(如果可用)。有人可以帮忙吗?  我试着把它放进去:

if ( (option = getopt(argc,argv,"a")) != -1 ){
           switch (option){
           case 'a':

但我不知道接下来会发生什么。

main(int argc, char *argv[]){

FILE *fp, *fp1;
char buffer;

if(argc != 4){
printf("\nError");
printf("\nSintaxis: tee [archivo1] [archivo2]\n");
exit(0);
}

if(strcmp(argv[1], "tee") == 0){
fp = fopen(argv[2], "r");
fp1 = fopen(argv[3], "w");

printf("\Content in %s:\n", argv[2]);

while(!feof(fp)){
    buffer = fgetc(fp);
    fputc(buffer, fp1);
    printf("%c", buffer);
}

printf("\n\n%s received %s\n", argv[3], argv[2]);   

fclose(fp);
fclose(fp1);
}
else
    printf("\nThe first argument have to be tee\n");
}

第二版,我认为更好。  但如果我运行程序没有选项-a else if(argc == 2){       printf(“写入文件:%s \ n”,argv [1]);       process_save_reading(argv [1],“w +”)在文件中写入一些文本argv [1] -file为空

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>


void usage() {
fprintf(stderr, "Usage: [-a program]");
exit(1);
}

void err(char * s1, char * s2) {
fprintf(stderr, "Error: %s ", s1);
perror(s2);
exit(1);
}
void process_reading() {
int c = fgetc(stdin);
while (c != EOF) {
putchar(c);
c = getchar();
}
}

void write_file_content(char * filename, int cnt, const char* mode) {
FILE *fp;
if ((fp = fopen(filename, mode)) == NULL) {
fprintf(stderr, "Can not open file: %s\n", filename);
exit(1);
}
fputc(cnt, fp);
fclose (fp);
}

void process_save_reading(char * filename, const char* mode) {
int c = fgetc(stdin);
while (c != EOF) {
putchar(c);
write_file_content(filename, c, mode);
c = getchar();
}
}

int file_exists(char * filename) {
return access(filename, F_OK) != -1;
}
int main(int argc, char * argv[]) {
char * opts = "a:";
int c;

if (argc == 1) {
process_reading();
}
else if (argc == 2) {
printf("Write to file: %s\n", argv[1]);
process_save_reading(argv[1],"w+");
} 
else {
while ((c = getopt(argc, argv, opts)) != -1) {
    switch (c) {
        case 'a':
            if (!file_exists(optarg)) {
                fprintf(stderr, "File: '%s' doesn't exists\n", optarg);
                exit(1);
            }
            printf("Save to file: %s\n", optarg);
            process_save_reading(optarg,"a+");

0 个答案:

没有答案