8.20练习

fgetc和fputc拷贝文件

#include <myhead.h> 
 
int main(int argc, const char *argv[]) 
{ 
    //fgetc和fputc 
    //将1.txt内容拷贝到2.txt中 
    if(argc!=3) 
    { 
        printf("外部参数错误\n");	
        return -1; 
    } 

    FILE *fp1 = fopen("./1.txt","r");//只读方式打开文件1 
    if(NULL==fp1) 
    { 
        perror("fp1"); 
        return -1; 
    } 
    FILE *fp2 = fopen("./2.txt","w");//只写清空方式打开文件2 
    if(NULL==fp2) 
    { 
        perror("fp2"); 
        return -1; 
    } 
    while(1) 
    { 
        char buff = fgetc(fp1); 
        if(buff==EOF)//读取到文件1末尾 
        { 
            break;//退出循环 
        } 
        fputc(buff,fp2);//放入文件2中 
    } 
    fclose(fp1);	
    fclose(fp2); 
    printf("拷贝成功\n"); 

    fp2 = fopen("./2.txt","r"); 
    if(NULL==fp2) 
    { 
        perror("fp2"); 
        return -1; 
    } 
    while(1)//循环输出 
    { 
        char rev = fgetc(fp2); 
        if(rev==EOF) 
        { 
            break; 
        } 
        fputc(rev,stdout);//输出读取到的单字符 
    } 
    fclose(fp2); 
    return 0; 
} 

fgets获取文件的行号

#include <stdio.h>

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

    // 打开1.txt文件进行读取
    FILE *fp = fopen("./1.txt", "r");

    // 检查文件是否成功打开
    if (fp == NULL) {
        perror("fp"); 
        return -1;
    }

    char buff[100]; // 缓冲区,用于存储从文件读取的每一行内容
    int count = 0;  // 行计数器,用于记录文件中的行数
    
    // 使用fgets逐行读取文件内容
    while (fgets(buff, sizeof(buff), fp) != NULL) {
    	int a=strlen(buff);
    	if(buff[a-1]=='\n'){
        	count++; // 每读取一行,计数器加1
   		}
    }
    
    // 打印文件中的总行数
    printf("%d\n", count);

    return 0;
}

fgets和fputs拷贝文件

#include <stdio.h>

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

    // 打开1.txt文件进行读取
    FILE *fp1 = fopen("./1.txt", "r");
    if (fp1 == NULL) {
        perror("fp1"); 
        return -1; 
    }
    
    // 打开2.txt文件进行写入
    FILE *fp2 = fopen("./2.txt", "w");
    if (fp2 == NULL) {
        perror("fp2"); 
        fclose(fp1); // 关闭已打开的1.txt文件
        return -1; 
    }

    char buff[100]; // 缓冲区,用于存储从文件读取的内容
    
    // 从1.txt读取每一行,并将其写入到2.txt
    while (fgets(buff, sizeof(buff), fp1) != NULL) {
        fputs(buff, fp2); // 将读取的内容写入到2.txt
    }
    
    // 关闭1.txt和2.txt文件
    fclose(fp1);
    fclose(fp2);
    
    // 重新打开2.txt文件进行读取
    FILE *fp = fopen("./2.txt", "r");

    // 从2.txt读取每一行,并输出到标准输出
    while (fgets(buff, sizeof(buff), fp) != NULL) {
        fputs(buff, stdout); // 将读取的内容输出到屏幕
    }

    // 关闭2.txt文件
    fclose(fp);

    return 0; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值