我想保存一个.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);
}
答案 0 :(得分:0)
我建议您阅读有关“ mmap ”系统调用的信息。 您需要使用“ 打开”系统调用打开文件, 然后在其上调用“ mmap ”,这将返回一个指向缓冲区的指针(由系统为您创建),因此您可以将其视为一个很长的字符串。
行之间用“ \ n”分隔,如果计划在字符串上使用“ strtok ”,请确保您已打开文件并具有写许可权。 这是因为“ strtok ”将分隔符重写为空终止符。