精华内容
下载资源
问答
  • 使用fgets和fputs实现shell指令中cp的文件复制到文件的功能 分析:fgets源文件的内容,然后通过fputs输出到目标文件 所以应该是“r”的形式打开源文件,“w”的形式打开目标文件 现在最大的问题在于:源文件的文件名...

    /*
    使用fgets和fputs实现shell指令中cp的文件复制到文件的功能
    分析:fgets源文件的内容,然后通过fputs输出到目标文件
    所以应该是“r”的形式打开源文件,“w”的形式打开目标文件
    现在最大的问题在于:源文件的文件名应该怎么写?目标文件的文件名怎么写
    所以现在问题就转换成了:如何将终端上输入的字符创,导入到程序中作为文件名使用
    利用主函数的参数 argv实现

    要求2:判断目标文件是否为目录文件,如果是目录文件,则将源文件原名复制到目录文件中
    关键在于如何判断一个文件是目录文件:寻找文件命中有没有‘.’,没有‘.’说明是目录文件
    

    /
    #include<stdio.h>
    #include<string.h>
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<unistd.h>
    int ifdir(char
    tar){
    int i = 0;
    for(i=0;tar[i]!=0;i++){
    if(tar[i]==’.’){
    return 0;
    }
    }
    return 1;
    }

    int main(int argc,char** argv){
    if(argc!=3){
    printf(“参数数量错误\n”);
    return 0;
    }

    /*int res = ifdir(argv[2]);
    char tar[50] = "./";
    if(res==1){*/
    char tar[50] = "./";
    struct stat filestat;
    lstat(argv[2],&filestat);
    if(S_ISDIR(filestat.st_mode)){
    	strcat(tar,argv[2]);//./111
    	strcat(tar,"/");//./111/
    	strcat(tar,argv[1]);//./111/1.c
    }else{
    	strcpy(tar,argv[2]);
    }
    FILE* rfp = fopen(argv[1],"r");
    if(rfp==NULL){
    	printf("等待复制的文件不存在\n");
    	return 0;
    }
    FILE* wfp = fopen(tar,"w");//./111/1.c
    char buf[20] = {0};
    while(1){
    	char* res = fgets(buf,20,rfp);
    	if(res==NULL){break;}
    	fputs(buf,wfp);
    }
    
    fclose(rfp);
    fclose(wfp);
    return 0;
    

    }

    展开全文
  • 编程模拟DOS或linux下的复制文件命令copy,一个文本文件(源文件)复制到另一个文本文件(目标文件)中。命令行格式: 命令名     源文件名    目标文件名 假设本题...

    完整题目:

    编程模拟DOS或linux下的复制文件命令copy,将一个文本文件(源文件)复制到另一个文本文件(目标文件)中。命令行格式为:
    命令名     源文件名    目标文件名
    假设本题程序编译连接后的可执行文件名为fcopy,则下面命令将scr.txt复制到scr.bak中
    fcopy     src.txt     scr.bak

    解法:

    1.利用fgetc和fputc函数

    #include<stdio.h>
    int fcopy(char *,char *);
    int main(int argc,char *argv[])
    {
       int i;
       if (argc < 3) {
       	printf("The command syntax is incorrect.fcopy [source filename] [target filename]\n");
       	exit(0);
       }
       if (fcopy(argv[1], argv[2]) == 0)
       	printf("No such a file:%s or %s\n",argv[1],argv[2]);
       return 0;
    }
    int fcopy(char*sourcename, char*targetname)
    {
       char c;
       FILE* fp1, * fp2;
       if (!(fp1 = fopen(sourcename, "r")))return 0;
       if (!(fp2 = fopen(targetname, "w")))return 0;
       while ((c = fgetc(fp1)) != EOF)fputc(c,fp2);
       fclose(fp1);
       fclose(fp2);
       return 1;
    }
    

    2.文件重定向

    #include<stdio.h>
    int fcopy(char *,char *);
    int main(int argc,char *argv[])
    {
    	int i;
    	if (argc < 3) {
    		printf("The command syntax is incorrect.fcopy [source filename] [target filename]\n");
    		exit(0);
    	}
    	if (fcopy(argv[1], argv[2]) == 0)
    		printf("No such a file:%s or %s\n",argv[1],argv[2]);
    	return 0;
    }
    int fcopy(char*sourcename, char*targetname)
    {
    	char c;
    	if (freopen(sourcename, "r", stdin) == NULL)return 0;
    	if (freopen(targetname, "w", stdout) == NULL)return 0;
    	while ((c = getchar()) != EOF)putchar(c);
    	return 1;
    }
    

    3.fgets函数和fputs函数

    #include<stdio.h>
    int fcopy(char*, char*);
    int main(int argc, char* argv[])
    {
        int i;
        if (argc < 3) {
            printf("The command syntax is incorrect.fcopy [source filename] [target filename]\n");
            exit(0);
        }
        if (fcopy(argv[1], argv[2]) == 0)
            printf("No such a file:%s or %s\n", argv[1], argv[2]);
        return 0;
    }
    int fcopy(char* sourcename, char* targetname)
    {
        char a[81];
        FILE* fp1, * fp2;
        if (!(fp1 = fopen(sourcename, "r")))return 0;
        if (!(fp2 = fopen(targetname, "w")))return 0;
        while (fgets(a,80,fp1)!=NULL)fputs(a,fp2);
        fclose(fp1);
        fclose(fp2);
        return 1;
    }
    

    4.fscanf函数和fprintf函数

    #include<stdio.h>
    int fcopy(char*, char*);
    int main(int argc, char* argv[])
    {
        int i;
        if (argc < 3) {
            printf("The command syntax is incorrect.fcopy [source filename] [target filename]\n");
            exit(0);
        }
        if (fcopy(argv[1], argv[2]) == 0)
            printf("No such a file:%s or %s\n", argv[1], argv[2]);
        return 0;
    }
    int fcopy(char* sourcename, char* targetname)
    {
        char c;
        FILE* fp1, * fp2;
        if (!(fp1 = fopen(sourcename, "r")))return 0;
        if (!(fp2 = fopen(targetname, "w")))return 0;
        while (fscanf(fp1,"%c",&c)!=EOF)fprintf(fp2,"%c",c);
        fclose(fp1);
        fclose(fp2);
        return 1;
    }
    
    展开全文
  • C fgets()函数用法示例读取文件

    千次阅读 2020-10-06 07:27:40
    Standard C library provides the fgets() function to read a line from a specified stream where the stream can be a file. fgets() function also used to read the specified number or size of the character...

    Standard C library provides the fgets() function to read a line from a specified stream where the stream can be a file. fgets() function also used to read the specified number or size of the characters from the given string. In this tutorial, we will learn the usage of fgets()  function with its parameters with different examples.

    标准C库提供了fgets()函数,以从指定的流读取一行,该流可以是文件。 fgets()函数还用于从给定的字符串中读取指定数量或大小的字符。 在本教程中,我们将通过不同的示例学习fgets()函数及其参数的用法。

    fgets()函数语法 (fgets() Function Syntax)

    The syntax of the fgets()  function is very easy. there are only 3 parameters where we will get a char array as a return value.

    fgets()函数的语法非常简单。 只有3个参数,我们将获得一个char数组作为返回值。

    char *fgets(char *str, int n, FILE *stream)

    Here is the parameters meaning and usage information.

    这是参数的含义和用法信息。

    • char *str is a string value where copied or got string will be stored.

      char *str是一个字符串值,将在其中存储复制或获取的字符串。

    • int n is the size or count of the read characters.

      int n是读取字符的大小或计数。

    • FILE *stream is the stream we want to read which is generally a file.

      FILE *stream是我们要读取的流,通常是一个文件。

    fgets()函数的返回值 (Return Value of fgets() Function)

    If the function execution is completed successfully there is a return value which is a char. If the end of stream or file is reached and no characters have been read the contents of str remain unchanged and a null pointer is returned.

    如果函数执行成功完成,则返回值为char的返回值。 如果到达流或文件的末尾且未读取任何字符,则str的内容保持不变,并返回空指针。

    从文件中读取整行 (Read The Whole Line From A File)

    Now its time for example. We will create a sample code which will read the file file.txt .  The string read will be put to the string.

    现在是时候了。 我们将创建一个示例代码,该示例代码将读取文件file.txt 。 读取的字符串将放入字符串中。

    • char str[] is the char array we will store the string we read.

      char str[]是char数组,我们将存储读取的字符串。

    • FILE *f is the file pointer we will use to read the string.

      FILE *f是我们将用来读取字符串的文件指针。

    #include <stdio.h>
    
    int main () {
       //File pointer to store opened file information and cursor
       FILE *f;
    
       //str char array to stored read values or characters
       char str[160];
    
       /* opening file for reading */
       f = fopen("file.txt" , "r");
       if(f == NULL) {
          perror("Error opening file");
          return(-1);
       }
       if( fgets (str, 160, f)!=NULL ) {
          /* writing content to stdout */
          puts(str);
       }
       fclose(f);
       
       return(0);
    }
    Read From File Whole Line
    Read From File Whole Line
    从文件整行读取

    We will store the code above with the file name fgets.c and we will compile with the following command.

    我们将使用文件名fgets.c存储上面的代码,并使用以下命令进行编译。

    $ gcc fgets.c -o fgets

    AND  run the created fgets executable like below.

    然后运行创建的fgets可执行文件,如下所示。

    $ ./fgets
    Read From File Whole Line
    Read From File Whole Line
    从文件整行读取

    从文件中读取指定字节数或大小的行(Read Line For Specified Number Of Bytes or Size From A File)

    In this example, we will specify the string size we want to read. The size value will be provided as the second parameter of the fgets()  function. In this example, we will read 300 characters from the given file to the str char array.

    在此示例中,我们将指定我们要读取的字符串大小。 大小值将作为fgets()函数的第二个参数提供。 在此示例中,我们将从给定文件中读取300个字符到str char数组。

    #include <stdio.h>
    
    int main () {
       //File pointer to store opened file information and cursor
       FILE *f;
    
       //str char array to stored read values or characters
       char str[300];
    
       /* opening file for reading */
       f = fopen("file.txt" , "r");
       if(f == NULL) {
          perror("Error opening file");
          return(-1);
       }
       if( fgets (str, 300, f)!=NULL ) {
          /* writing content to stdout */
          puts(str);
       }
       fclose(f);
    
       return(0);
    }
    LEARN MORE  What Is EOF (End Of File)? Examples with PHP, C++, C, Python, Java
    了解更多什么是EOF(文件末尾)? PHP,C ++,C,Python,Java的示例

    翻译自: https://www.poftut.com/fgets-c-library-function-usage-examples-to-read-file/

    展开全文
  • 文件a复制为文件b

    2019-11-19 13:58:16
    #include "stdio.h" main(){ FILE *fpa,*fpb;//定义文件指针fpa,文件指针fpb char str[100];//定义接收文件的数据 fpa = fopen("a.txt","r");//指针指向文件fpa的数据 ... fgets(str,"%s",...
    #include "stdio.h"
    main(){
       
    	FILE *fpa,*fpb;//定义文件指针fpa,文件指针fpb
    	char str[100];//定义接收文件的数据
    	fpa = fopen("a.txt"<
    展开全文
  • 文章目录(一)库函数、系统调用(1)C语言文件操作库函数(2)Linux系统调用(二)用户态和内核态相关知识(三)系统调用的使用测试 (一)库函数、系统调用 库函数:在函数库实现中、在用户空间调用执行 (1)...
  • 文件操作之函数fputs和函数fgetsfgets函数 最好的学习方法就是查手册,就是在iterm下使用man fgets,fputs以及其他一切不懂的函数或者其他的都可使用手册,就是man一下,你就知道。 char * fgets(char * restrict ...
  • 文本文件 #include <stdio.h> int main(int argc,char *argv[]) ... printf("本程序功能是复制文件,file1是目标文件,file2是被复制文件\n"); printf("fg: ./copy file1 file2\n"); } FILE *fp1,*fp2; if
  • (1)MATLAB读写文件

    2021-04-21 09:26:26
    另外有些用户希望获取文件的...复制代码现在问题来了,如何获取文本文件的行数呢??下面我们提供几种解决方案吧!本文代码中测试的data.csv数据文件总共有10万行,大概77M。方法一最容易想到的就是使用MATLAB的f...
  • 查看当前所在目录 getcwd(); ... 查看当前目录下的文件 1.opendir(); $dir=opendir("$pwd"); while (($f=readdir($dir))!=false){ ...
  • C语言中的文件操作

    2021-05-25 09:03:12
    文件的基本概念所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常...
  • linux文件操作-标准I/O操作--fgets与gets

    千次阅读 2013-12-28 19:57:55
    fgets与gets 1 gets介绍 [函数原型]  #include  char * gets ( char * str ); [函数描述]  从标准输入里读取字符串。从标准输入里读出字符串并其存储在字符数组str里,直到遇到换行符"\n"或者文件终止符EOF
  • php如何修改php文件内容2020-10-19 16:04:08php修改文件内容的方法:首先通过file_put_contents函数写入文件;然后使fwrite配合fopen进行写入并修改的操作;最后通过file_exists等函数检测文件属性即可。推荐:《PHP...
  • C语言文件的读写

    千次阅读 多人点赞 2018-11-30 12:24:59
    文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数: 字符读写函数&amp;amp;nbsp; :fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:freed和fwrite 格式化读写函数:...
  • C语言文件操作

    千次阅读 多人点赞 2019-08-04 08:07:14
    实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是存放在外部介质(如磁盘等)上的,在使用时才调入内存中来。从用户的角度看,Linux系统的文件...
  • 1、Linux文件I/O操作

    2019-09-03 19:40:10
    1 概念 首先让我们看一下,什么是文件I/O: 所谓文件I/O就是输入/输出。文件IO的意思就是读写文件文件操作的一般步骤: 在Linux中要操作一个文件,一般是先open打开一个文件,得到文件描述符,然后对文件...
  • 其中,fgets 函数的原型如下: fgets函数功能:从文件指针stream中读取字符,存到以s起始地址的空间里,知道读完n-1个字符,或者读完一行。函数说明 fgets()用来从参数stream所指的文件内读入字符并存到参数s所指...
  • 作者:HoytEmail:hoytluo@21cn.com前言:我们在这一节将要讨论linux下文件操作的各个函数.文件的创建和读写文件的各个属性目录文件的操作管道...文件的创建和读写我假设你已经知道了标准级的文件操作的各个函数(fop...
  • 文件I/O:文件I/O称之不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。 ...
  • clearerr(清除文件流的错误旗标)相关函数 feof表头文件 #include定义函数 void clearerr(FILE * stream);函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。返回值fclose(关闭文件)相关函数 close,...
  • 主要讲述 cp、mkdir、rm、tac、df 五个命令主要功能的模拟实现代码。让读者学会使用 strace 来跟踪系统调用的使用情况。加深读者对操作系统的认识与理解,引导读者学习 Linux 系统编程。 本文章中的示例...
  • C语言写递归复制文件夹和文件

    千次阅读 2017-04-10 21:27:00
    (创建文件夹和查看文件属性系统命令) 执行格式:./copy -rf /root/Desktop/123/ /root/Desktop/456/ ./编译成执行文件的名字 递归复制 想要复制文件 复制到的地方(要用绝对路径) #include #include #...
  • C语言文件操作(转载)

    2021-05-24 01:42:32
    C语言文件操作(转载)1,两种文件存取方式(输入,输出方式)顺序存取直接存取2,数据的两种存放形式文本文件二进制文件13.2文件指针定义文件类型指针变量的一般形式:FILE *指针变量名;例如:FILE *fp1,*fp2;13.3打开文件在...
  • http://blog.csdn.net/ding285119896/article/details/13161947C语言标准路我们提供了文件操作函数:包含:fopen()/fclose() //文件打开与关闭函数;(参数与返回类型省略)fgetc()/fputc() //从流中获取字符,向...
  • C语言程序设计文件操作.doc第8章 文件操作1、 概述1. 概述文件是指存储在外部介质上数据的集合。操作系统是以文件为单位对数据进行管理的。对I/O设备的管理也是看做一个文件,而且都有特殊的名字。如com,lpt,prn,...
  • 文件操作详解(建议收藏)

    多人点赞 热门讨论 2021-10-03 16:01:43
    1.文件的概念 文件的基本概念  所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件...
  • 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类...
  • C语言的磁盘文件问题

    2021-05-24 02:21:20
    匿名用户1级2010-04-06 回答C语言文件操作函数1,两种文件存取方式(输入,输出方式)顺序存取直接存取2,数据的两种存放形式文本文件二进制文件13.2文件指针定义文件类型指针变量的一般形式:FILE *指针变量名;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,706
精华内容 1,882
关键字:

将文件1复制为文件2的命令fgets