Linux自学day20-流的输入与输出

 一     fputc、fgetc的用法

1.1用fputc和fgetc完成文件内容的拷贝,代码如下:

// 函数功能:将源文件的内容复制到目标文件
// 参数:pdstfilename - 目标文件名的指针,psrcfilename - 源文件名的指针
// 返回值:成功返回0,失败返回-1
int copy_file_content(const char *pdstfilename, const char *psrcfilename)
{
    FILE *fsrc = NULL;  // 定义一个文件指针,用于指向源文件
    FILE *fdst = NULL;  // 定义一个文件指针,用于指向目标文件
    char ch = 0;  // 用于存储从源文件读取的字符

    // 以只读模式打开源文件
    fsrc = fopen(psrcfilename, "r");
    if (NULL == fsrc)
    {
        ERR_MSG("打开源文件失败");  // 若打开源文件失败,输出错误信息
        goto err_open_srcfile;  // 跳转到错误处理标签
    }

    // 以写入模式打开目标文件
    fdst = fopen(pdstfilename, "w");
    if (NULL == fdst)
    {
        ERR_MSG("打开目的文件失败");  // 若打开目标文件失败,输出错误信息
        goto err_open_dstfile;  // 跳转到错误处理标签
    }

    while (1)
    {
        // 从源文件中读取一个字符
        ch = fgetc(fsrc);
        // 如果读取到文件末尾(EOF表示文件结束符),则退出循环
        if (EOF == ch)
        {
            break;
        }
        // 将读取到的字符写入目标文件
        fputc(ch, fdst);
    }

    // 关闭源文件和目标文件
    fclose(fsrc);
    fclose(fdst);
    
    return 0;  // 复制成功,返回0

// 打开目标文件失败的错误处理
err_open_dstfile:
    fclose(fsrc);  // 关闭已打开的源文件
// 打开源文件失败的错误处理
err_open_srcfile:
    return -1;  // 复制失败,返回-1
}

// 主函数,程序入口
int main(int argc, const char **argv)
{
    char srcfilename[32] = {0};  // 存储源文件名的数组
    char dstfilename[32] = {0};  // 存储目标文件名的数组
    int ret = 0;  // 存储函数返回值

    // argv[0] = ./a.out ,程序本身的名称
    // argv[1] = srcfilename ,第一个命令行参数,即源文件名
    // argv[2] = dstfilename ,第二个命令行参数,即目标文件名
    if (argc != 3)
    {
        printf("usage:./a.out srcfilename dstfilename\n");  // 若参数个数不正确,输出使用方法
        printf("command: this command is used to copy srcfilename content to dstfilename\n");
        return -1;  // 参数错误,返回-1
    }

    // 调用copy_file_content函数进行文件复制
    ret = copy_file_content(argv[2], argv[1]);
    if (ret != 0)
    {
        printf("拷贝失败!\n");  // 若复制失败,输出错误信息
        return -1;  // 复制失败,返回-1
    }

    printf("拷贝成功!\n");  // 复制成功,输出成功信息

    return 0;  // 程序正常结束,返回0
}

1.2fgetc 函数的用法

fgetc 函数用于从指定的文件流中读取一个字符。其原型为:

int fgetc(FILE *stream);
  • stream 是指向文件的指针,表示要读取的文件流。
  • 函数返回值:如果读取成功,返回读取到的字符(以 int 类型返回);如果到达文件末尾或发生错误,返回 EOFEOF 是一个宏,通常定义为 -1)。

1.3fputc 函数的用法

fputc 函数用于将一个字符写入指定的文件流。其原型为:

int fputc(int c, FILE *stream);
  • c 是要写入的字符(以 int 类型传入)。
  • stream 是指向文件的指针,表示要写入的文件流。
  • 函数返回值:如果写入成功,返回写入的字符;如果发生错误,返回 EOF

二     fputs、fgets的用法 

2.1 用fputs、fgets完成文件内容的拷贝,代码如下:

// 函数功能:将源文件的内容复制到目标文件
// 参数:pdstfile - 目标文件的路径
//       psrcfile - 源文件的路径
// 返回值:0 - 复制成功,-1 - 复制失败
int copy_file_content(const char *pdstfile, const char *psrcfile)
{
    FILE *psrc = NULL;  // 源文件的文件指针,初始化为NULL

你可能感兴趣的:(linux,服务器,java)