我可以将作为命令行参数传递的.txt文件保存到C中的char数组吗?

时间:2019-04-21 13:11:35

标签: c text arguments

我想保存一个.txt文件,该文件作为参数传递给某种数据类型。例如,如果我的命令是./projexec -c“某些文本” filename.txt,则我的目标是将filename.txt(argv [3])的内容复制到char数组中。这是可能的吗?

int main(int argc, char *argv[]) {
int i;
FILE *fp;
char txtfile[];

for(i=0; i<argc; i++) {
    if(argc>1 && argv[3] !=NULL) {
        fp=fopen(argv[3],"r");
    }
    else {
        printf("There is no .txt file in this argument.");
    }

}

更新:fread达到了目的!

#define size 1000 
int main(int argc, char  *argv []) {

int i;
FILE *fp;
char argtxt[]= ".txt";
char txtfile[size];
size_t br;

for(i=0; i<argc; i++){

if(argc > 1 && strstr(argv[i],argtxt)!=NULL){
fp=fopen(argv[i],"r");
br=fread(txtfile,sizeof(txtfile),size, fp);
printf("file copied.\n");
}
}
printf(txtfile);

}

1 个答案:

答案 0 :(得分:0)

我建议您阅读有关“ mmap ”系统调用的信息。 您需要使用“ 打开”系统调用打开文件, 然后在其上调用“ mmap ”,这将返回一个指向缓冲区的指针(由系统为您创建),因此您可以将其视为一个很长的字符串。

行之间用“ \ n”分隔,如果计划在字符串上使用“ strtok ”,请确保您已打开文件并具有写许可权。 这是因为“ strtok ”将分隔符重写为空终止符。